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

Plotly中barmode=group参数失效,无法生成分组柱状图

解决Plotly分组柱状图显示为堆叠图的问题

你的问题出在没有指定分组依据的字段,Plotly无法识别需要按品牌拆分数据系列,所以默认将同一年份的所有数值堆叠展示。

修改方法

在px.bar()中添加color='Brand'参数,明确按品牌区分不同的柱子系列,同时保留barmode='group'即可实现分组效果:

data='''
Brand   2018    2019    2020    2021
Hersheys    100 200 212 314
MilkyWay    105 106 214 178
Reeses  84  82  95  112
Payday  278 552 214 292
'''

import pandas as pd
from io import StringIO
import plotly.express as px

brand = pd.read_csv(StringIO(data), sep='\s+')
brand=pd.melt(brand,id_vars=['Brand'],value_vars=brand.columns)
brand=brand.rename(columns={'variable':'Year'})

# 以下计算百分比的代码不影响分组柱状图,可保留或删除
agg_brand=brand[['value','Year']].groupby('Year').agg('sum').reset_index()
agg_brand.columns=['Year','value_sum']
brand=pd.merge(brand,agg_brand,on='Year',how='left')
brand['percent']=(brand['value']/brand['value_sum']*100).round(1).astype(str)+"%"

# 关键修改:添加color='Brand'
fig=px.bar(brand,x='Year',y='value',color='Brand',barmode='group')
fig.show()

原理说明

你的数据通过melt已经转换成了长格式,每个年份对应多个品牌的数值。Plotly的barmode='group'需要配合color参数来识别不同的数据系列,这样才能将同一年份下不同品牌的柱子并排展示,而不是堆叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:36:29