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

如何实现堆叠子图的图例颜色一致且标签无重复?

解决堆叠子图图例颜色一致且标签不重复的问题

要实现相同图例颜色+不重复标签的效果,核心是给同名trace绑定固定颜色,并让重复标签的trace不显示图例项。以下是修改后的代码:

import plotly.graph_objects as go
from plotly.subplots import make_subplots

# Sample data
x = [1, 2, 3, 4, 5]
y1 = [1, 2, 4, 8, 16]
y2 = [1, 3, 6, 10, 15]
y3 = [1, 4, 8, 12, 16]

# 定义固定颜色映射,确保同一标签用相同颜色
color_map = {
    'A': '#1f77b4',
    'B': '#ff7f0e',
    'C': '#2ca02c'
}

# 创建子图
fig = make_subplots(rows=1, cols=2, subplot_titles=('Subplot 1', 'Subplot 2'))

# 第一个子图的堆叠区域图
fig.add_trace(
    go.Scatter(x=x, y=y1, mode='lines', stackgroup='one', name='A', line=dict(color=color_map['A'])),
    row=1, col=1
)
fig.add_trace(
    go.Scatter(x=x, y=y2, mode='lines', stackgroup='one', name='B', line=dict(color=color_map['B'])),
    row=1, col=1
)

# 第二个子图的堆叠区域图
fig.add_trace(
    go.Scatter(x=x, y=y1, mode='lines', stackgroup='two', name='A', line=dict(color=color_map['A']), showlegend=False),
    row=1, col=2
)
fig.add_trace(
    go.Scatter(x=x, y=y3, mode='lines', stackgroup='two', name='C', line=dict(color=color_map['C'])),
    row=1, col=2
)

# 更新布局
fig.update_layout(title_text='Stacked Area Plots on Subplots', showlegend=True)

# 展示图表
fig.show()

关键修改说明:

  • 新增color_map字典,为每个标签分配固定颜色,确保不同子图中同名trace颜色统一
  • 第二个子图中的'A' trace设置showlegend=False,避免图例出现重复的'A'项
  • 所有trace通过line=dict(color=color_map[标签名])绑定对应颜色

修改后图例只会显示一次'A'、'B'、'C',且两个子图中'A'的颜色完全一致,满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:22:24