如何实现堆叠子图的图例颜色一致且标签无重复?
解决堆叠子图图例颜色一致且标签不重复的问题
要实现相同图例颜色+不重复标签的效果,核心是给同名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
相关产品推荐
相关产品推荐

