You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python合并共享X轴不同Y轴的两张Plotly柱状图

Plotly共享X轴合并柱状图实现方案

现有素材参考

  • 15800CE持仓变化柱状图
    First image
    对应原始代码:
import plotly.express as px
fig = px.bar(data, x='date', y='oi_diff_nifty15800CE',title='Oi chain of Nifty 15800CE')
fig.update_layout(width=650,height=500)
fig.show()
  • 15800PE持仓变化柱状图
    Second Image
    对应原始代码:
import plotly.express as px
fig = px.bar(data, x='date', y='oi_diff_nifty15800PE',title='Oi chain of Nifty 15800PE') 
fig.update_layout(width=650,height=500)
fig.show()

合并实现方案

方案1:单Y轴分组/堆叠柱状图

适合两个Y值量级接近、可共用同一刻度的场景,默认按日期分组展示两个柱子,支持点击图例隐藏对应序列:

import plotly.express as px

fig = px.bar(data, 
             x='date', 
             # 传入两个Y列名即可自动生成共享X轴的多序列柱状图
             y=['oi_diff_nifty15800CE', 'oi_diff_nifty15800PE'],
             barmode='group',  # 可替换为'stack'改为堆叠展示效果
             title='Nifty 15800CE&PE 持仓变化合并图',
             labels={'value': '持仓变化差值', 'variable': '合约类型'})
fig.update_layout(width=700, height=500)
fig.show()

如果需要调整柱子颜色、间距等样式,可通过update_traces方法自定义

方案2:双Y轴独立刻度柱状图

适合两个Y值量级差异大、需要各自独立刻度的场景:

import plotly.graph_objects as go
from plotly.subplots import make_subplots

# 初始化支持双Y轴的画布
fig = make_subplots(specs=[[{"secondary_y": True}]])

# 添加CE序列,关联左侧Y轴
fig.add_trace(
    go.Bar(x=data['date'], y=data['oi_diff_nifty15800CE'], name='15800CE'),
    secondary_y=False
)

# 添加PE序列,关联右侧Y轴
fig.add_trace(
    go.Bar(x=data['date'], y=data['oi_diff_nifty15800PE'], name='15800PE'),
    secondary_y=True
)

# 配置全局样式
fig.update_layout(
    title='Nifty 15800CE&PE 持仓变化合并图(双Y轴)',
    width=700,
    height=500,
    barmode='group' # 同样可替换为'stack'改为堆叠展示
)
# 配置两个Y轴的标签
fig.update_yaxes(title_text='CE持仓变化差值', secondary_y=False)
fig.update_yaxes(title_text='PE持仓变化差值', secondary_y=True)

fig.show()

内容的提问来源于stack exchange,提问作者Neeraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 07:39:01