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

Plotly堆叠分组柱状图:为指定列添加颜色区分的问题

解决Plotly Express堆叠柱状图颜色区分问题

方法一:直接用color_discrete_map指定颜色(无需转换数据格式)

当你用y=['power', 'rf', 'glob']传入多列时,Plotly会自动为每一列生成独立的柱状图trace。不用手动给color传列名列表,直接用color_discrete_map绑定列名和对应颜色即可:

import plotly.express as px

# 生成堆叠柱状图并指定各列颜色
fig = px.bar(month_df, x='date', y=['power', 'rf', 'glob'],
             color_discrete_map={
                 'power': '#FF5733',  # 支持十六进制色值或颜色名称
                 'rf': '#33FF57',
                 'glob': '#3357FF'
             })
fig.show()

也可以用update_traces批量设置颜色:

fig = px.bar(month_df, x='date', y=['power', 'rf', 'glob'])
# 按列的顺序给三个trace设置颜色
fig.update_traces(marker_color=['#FF5733', '#33FF57', '#3357FF'], selector=dict(type='bar'))
fig.show()

方法二:转成长格式数据(Plotly推荐用法)

Plotly Express更适配长格式数据,用pandas.melt把宽格式转成长格式后,就能直接用color参数区分不同指标:

import pandas as pd
import plotly.express as px

# 将宽格式数据转成长格式
melted_df = month_df.melt(
    id_vars='date',  # 保留的索引列
    value_vars=['power', 'rf', 'glob'],  # 需要堆叠的目标列
    var_name='Metric',  # 新生成的指标列名称
    value_name='Value'  # 新生成的数值列名称
)

# 生成堆叠柱状图,用Metric列区分颜色
fig = px.bar(melted_df, x='date', y='Value', color='Metric', barmode='stack')
fig.show()

为什么你之前的代码报错?

你直接给color传['power', 'rf', 'glob']时,Plotly会要求这个参数的长度和x列(date)的长度一致(你的date列有11行),但你传的列表只有3个元素,因此触发了长度不匹配的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:01:32