如何使用Python合并共享X轴不同Y轴的两张Plotly柱状图
Plotly共享X轴合并柱状图实现方案
现有素材参考
- 15800CE持仓变化柱状图

对应原始代码:
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持仓变化柱状图

对应原始代码:
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
相关产品推荐
相关产品推荐

