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

如何在Plotly Python中制作带次坐标轴的分组柱状图(barmode=group)?

带次坐标轴的分组柱状图实现方案

要解决柱状图重叠的问题,核心是开启分组显示模式并确保两组数据的x轴类别匹配,具体实现如下:

  • 统一x轴类别:若两组x轴数据存在差异,需合并为完整的类别列表,对应缺失数据补0,保证两组x轴完全对齐
  • 设置barmode='group':在布局中开启分组显示,让同类别下的柱状图并列排布
  • 绑定主次坐标轴:分别将两个柱状图系列关联到主、次坐标轴

完整代码示例

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

# 示例数据(x轴类别统一)
x = ['类别A', '类别B', '类别C', '类别D']
y_main = [12, 28, 18, 32]
y_secondary = [95, 160, 130, 190]

# 创建带次坐标轴的子图
fig = make_subplots(specs=[[{'secondary_y': True}]])

# 添加主坐标轴柱状图
fig.add_trace(
    go.Bar(x=x, y=y_main, name='主轴系列'),
    secondary_y=False
)

# 添加次坐标轴柱状图
fig.add_trace(
    go.Bar(x=x, y=y_secondary, name='次轴系列'),
    secondary_y=True
)

# 开启分组显示(关键设置)
fig.update_layout(barmode='group')

# 配置坐标轴标签
fig.update_xaxes(title_text='分类')
fig.update_yaxes(title_text='主轴数值', secondary_y=False)
fig.update_yaxes(title_text='次轴数值', secondary_y=True)

fig.show()

处理x轴数据不一致的情况

如果两组x轴类别不完全相同,需先整理数据:

# 原始差异数据
x1 = ['类别A', '类别B']
y1 = [12, 28]
x2 = ['类别B', '类别C']
y2 = [160, 130]

# 合并为完整x轴类别
x_full = list(set(x1 + x2))
x_full.sort()  # 保持类别顺序

# 补全对应y值
y1_full = [y1[x1.index(c)] if c in x1 else 0 for c in x_full]
y2_full = [y2[x2.index(c)] if c in x2 else 0 for c in x_full]

# 后续使用x_full、y1_full、y2_full执行上述完整代码即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:53:19