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

Plotly堆叠条形图:多年份选择时单条颜色异常问题求助

Dash堆叠条形图多时间段颜色异常解决方案

问题根源

当选择多年数据时,Plotly默认复用了首个条形的颜色映射逻辑,未为14个独立条形分别分配专属色阶,导致所有条形颜色趋同。

具体解决方案

  • 为每个条形独立绑定色阶
    放弃全局设置color_scale,为14个条形分别指定不同色阶(可从Plotly内置色阶库选取14种,或自定义渐变)。生成每个条形的trace时,单独配置对应的colorscale,并设置showscale=False避免重复显示色阶控件。

  • 子组颜色与条形强关联
    处理多时段数据时,每个条形的堆叠子组颜色需基于对应条形的色阶生成。循环遍历每个x轴类别,为该类别下的所有子组数据生成匹配色阶的颜色列表,通过go.Bar的marker.color参数手动赋值,替代自动颜色映射。

  • 校验数据分组逻辑
    确认多时段筛选后的数据是否按x轴类别(14个条形)和子组维度正确分组。若分组错误,会导致所有子组被归为同一类别,进而复用同一种颜色。可打印筛选后的DataFrame结构,验证每个类别下的子组数据完整性。

示例代码片段

import plotly.graph_objects as go
import pandas as pd
import plotly.colors

# 定义14种不同的色阶(可根据需求调整)
color_scales = [
    plotly.colors.diverging.RdYlBu, plotly.colors.sequential.Blues,
    plotly.colors.sequential.Reds, plotly.colors.diverging.PRGn,
    plotly.colors.sequential.Greens, plotly.colors.diverging.PiYG,
    plotly.colors.sequential.Purples, plotly.colors.diverging.BrBG,
    plotly.colors.sequential.Oranges, plotly.colors.diverging.RdGy,
    plotly.colors.sequential.Greys, plotly.colors.diverging.RdBu,
    plotly.colors.sequential.YlOrBr, plotly.colors.diverging.Spectral
]

# 假设filtered_df是经年份滑块筛选后的数据集
fig = go.Figure()
categories = filtered_df['category'].unique()

for idx, category in enumerate(categories):
    # 提取当前条形的专属数据
    cat_data = filtered_df[filtered_df['category'] == category]
    # 获取对应色阶
    current_scale = color_scales[idx]
    # 归一化子组数值,映射到色阶生成颜色列表
    values = cat_data['value']
    if values.max() != values.min():
        norm_vals = (values - values.min()) / (values.max() - values.min())
    else:
        norm_vals = [0.5] * len(values)
    subgroup_colors = [plotly.colors.sample_colorscale(current_scale, val)[0] for val in norm_vals]
    
    # 添加当前条形的堆叠trace
    fig.add_trace(go.Bar(
        x=[category] * len(cat_data),
        y=cat_data['value'],
        name=category,
        marker=dict(color=subgroup_colors),
        showscale=False
    ))

fig.update_layout(barmode='stack')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:25:23