Plotly设置barmode为group后柱状图仍堆叠问题求助
问题:Plotly Express分组柱状图(barmode="group")未生效
我希望为每种fruit将total和available的柱状图并排显示。以下是我使用的数据:
import plotly.express as px data_frame = { "fruits": ["orange", "apple", "banana", "cherry"], "total": [10, 20, 30, 25], "available": [7, 10, 27, 15], }
我使用plotly.express编写了如下代码:
fig = px.bar( data_frame, x="fruits", y=["total", "available"], color="fruits", barmode="group", # 未生效 ) fig.show()
但柱状图仍以stack模式显示,请问我遗漏了什么?
解决方案
问题核心在于**color="fruits"**参数的冲突:当同时指定y=["total", "available"](多Y轴系列)和color="fruits"时,Plotly会将每个水果的两个数据系列(total/available)按水果维度堆叠,而非按数据系列分组并排。
要实现每种水果的total和available柱状图并排,可按以下两种方式修改:
方式一:直接调整参数(推荐)
移除color="fruits",改用color区分total和available系列,保留barmode="group":
import plotly.express as px data_frame = { "fruits": ["orange", "apple", "banana", "cherry"], "total": [10, 20, 30, 25], "available": [7, 10, 27, 15], } fig = px.bar( data_frame, x="fruits", y=["total", "available"], barmode="group", # 可选:自定义两个系列的颜色 color_discrete_map={"total": "#FFA500", "available": "#2E8B57"} ) fig.show()
方式二:转换数据格式(保留按水果配色)
如果需要保留按水果区分颜色的需求,需先将宽格式数据转换为长格式,再绘图:
import plotly.express as px import pandas as pd data_frame = { "fruits": ["orange", "apple", "banana", "cherry"], "total": [10, 20, 30, 25], "available": [7, 10, 27, 15], } # 转换为长格式数据 df_long = pd.melt(data_frame, id_vars="fruits", var_name="type", value_name="count") fig = px.bar( df_long, x="fruits", y="count", color="fruits", barmode="group", # 按数据系列分面,也可改为color="type"区分系列 facet_col="type" ) fig.show()
内容的提问来源于stack exchange,提问作者Minux-Dev
相关产品推荐
相关产品推荐

