python - 用 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 2
和trace 3
)。
我发现了一些“手工制作”的解决方案,手动设置图形的颜色,并在两个以上显示图例,但这不是最佳的......
这是该图应该是什么样子的示例:
图例条目“trace 1”将对应于y1
和y2
,而“trace 2”对应于z1
和z2
。所以当我点击图例时,两条线都被隐藏了。
我不知道这是否很清楚,但这是另一个有同样问题的话题。
谢谢!
解决方案
为每个图形指定要分组的图例。您还可以使用线条为每个组设置相同的颜色。
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()
推荐阅读
- javascript - 在Javascript中将整数映射到其他变量的正确方法是什么
- spring-boot - 不支持请求方法“GET”,不允许方法,状态=405
- python - 如何获得 binance-python 测试网更新余额?
- reactjs - 如何在复选框更改时更新同级复选框?
- php - 使用 gmail smpt/sendgrid 从 laravel 发送电子邮件
- autodesk-forge - Autodesk forge - 在标记上显示自定义文本
- automapper - identityserver4 的 Automapper 问题 - MissingMethodException:找不到方法:'!!0 AutoMapper.IMapper.Map(System.Object)'
- mysql - 如何确定metricbeat mysql的理想周期?
- android - 在 google play 控制台中加载映射文件
- javascript - 如何在渲染下一个组合框之前执行 store.load 方法