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

Plotly分组柱状图颜色异常:正负值配色及分组图例修正

解决分组柱状图配色与图例不一致问题

问题分析

原代码通过fig.update_traces直接给所有柱子设置统一颜色列表,导致不同分组的trace共享同一套颜色规则,图例颜色被统一覆盖,无法区分分组。

修正代码

import pandas as pd
import numpy as np
import plotly.express as px 

df = pd.DataFrame( {
    "x" : [1,2,3],
    "group1" : [np.nan, 1, -0.5],
    "group2" : [np.nan, -0.2, 1],  
}).set_index("x")

df_ = df.reset_index().melt(id_vars='x')
fig = px.bar(df_, x='x', y='value', color='variable', barmode='group')

# 逐个处理每个分组的trace,设置对应颜色
for i, trace in enumerate(fig.data):
    # 获取当前分组的数值数据
    group_vals = df_[df_['variable'] == trace.name]['value']
    # 根据正负值生成颜色列表
    trace.marker.color = ['red' if val < 0 else 'green' for val in group_vals]
    # 配置柱子边框样式
    trace.marker.line.color = 'black'
    trace.marker.line.width = 1.5

fig.show()

修正说明

  • 遍历fig.data中的每个trace(对应一个分组),为每个分组单独生成颜色列表,确保颜色与自身分组的数值对应
  • 每个分组的图例颜色会自动取该分组第一个非NaN数值对应的颜色,实现分组区分
  • 保留柱子黑色边框的样式要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:05:19