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

如何用Plotly底层接口为一维数据(Series)绘制堆叠条形图?

用Plotly底层接口实现与高层接口一致的堆叠条形图

解决方案

要复现px.bar(df_monthly_earnings.T)的堆叠效果,需要为每个月份单独创建一个go.Bar trace,并开启堆叠模式。以下是对应代码:

import plotly.graph_objects as go

fig = go.Figure()

# 遍历每个月份数据,添加独立的条形图trace
for _, row in df_monthly_earnings.iterrows():
    fig.add_trace(go.Bar(
        x=['Earnings'],  # 所有trace共享同一个x轴类别
        y=[row['Earnings']],
        name=f"Month {row['Month']}"  # 图例显示月份标识
    ))

# 配置堆叠模式和图表尺寸
fig.update_layout(
    barmode='stack',
    width=500,
    height=500
)

fig.show()

如果你的df_monthly_earnings是以Month为索引的Series,可以改用以下遍历方式:

for month, earnings in df_monthly_earnings.items():
    fig.add_trace(go.Bar(
        x=['Earnings'],
        y=[earnings],
        name=f"Month {month}"
    ))

为什么初始代码不符合预期?

你之前的代码仅创建了一个go.Bar trace,对应所有月份的收入数据,自然无法形成堆叠效果。而高层接口px.bar(df_monthly_earnings.T)会自动完成以下操作:

  1. 识别转置后DataFrame的每一列(对应每个月份)为独立数据系列
  2. 为每个系列生成一个Bar trace,共享同一个x轴类别(转置后的行索引,即Earnings)
  3. 默认启用barmode='stack',将多个trace堆叠显示

通过手动创建每个月份的trace并开启堆叠模式,就能完全复现高层接口的输出效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:06:26