首页 > 解决方案 > 用 Python 在 Plotly 中分组图例

问题描述

我在 Python 上发现了 Plotly,我正在尝试绘制“分组”子图。

这是一个代码示例:

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

fig = make_subplots(rows=1, cols=2, start_cell="bottom-left")

x = [0,1,2,3,4,5,6,7,8,9]

y1 = [10,9,8,7,6,5,4,3,2,1]
y2 = [1,2,3,4,5,6,7,8,9,10]

z1 = [1,1,2,2,3,3,4,4,5,5]
z2 = [6,6,2,2,3,3,1,1,0,0]

fig.add_trace(go.Scatter(x=x, y=y1), row=1, col=1)
fig.add_trace(go.Scatter(x=x, y=y2), row=1, col=2)
fig.add_trace(go.Scatter(x=x, y=z1), row=1, col=1)
fig.add_trace(go.Scatter(x=x, y=z2), row=1, col=2)

fig.show()

这给出了这个结果: 在此处输入图像描述

但我想要做的是将y图和z图“分组”在同一个图例中:所以在图中,蓝线和红线应该出现在相同的颜色上,并且对应于图例上的一个条目(并且同上trace 2trace 3)。

我发现了一些“手工制作”的解决方案,手动设置图形的颜色,并在两个以上显示图例,但这不是最佳的......

这是该图应该是什么样子的示例:

结果 图例条目“trace 1”将对应于y1y2,而“trace 2”对应于z1z2。所以当我点击图例时,两条线都被隐藏了。

我不知道这是否很清楚,但这是另一个有同样问题的话题。

谢谢!

标签: pythonplotly

解决方案


为每个图形指定要分组的图例。您还可以使用线条为每个组设置相同的颜色。

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

fig = make_subplots(rows=1, cols=2, start_cell="bottom-left")

x = [0,1,2,3,4,5,6,7,8,9]

y1 = [10,9,8,7,6,5,4,3,2,1]
y2 = [1,2,3,4,5,6,7,8,9,10]

z1 = [1,1,2,2,3,3,4,4,5,5]
z2 = [6,6,2,2,3,3,1,1,0,0]

fig.add_trace(go.Scatter(x=x, y=y1, mode='markers+lines', line=dict(color='Crimson'), legendgroup='group'), row=1, col=1)
fig.add_trace(go.Scatter(x=x, y=y2, mode='markers+lines', line=dict(color='Blue'), legendgroup='group2'), row=1, col=2)
fig.add_trace(go.Scatter(x=x, y=z1, mode='markers+lines', line=dict(color='Crimson'), legendgroup='group'), row=1, col=1)
fig.add_trace(go.Scatter(x=x, y=z2, mode='markers+lines', line=dict(color='Blue'), legendgroup='group2'), row=1, col=2)

fig.show()

在此处输入图像描述


推荐阅读