首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Plotly:如何设置具有分组图例的多个子图?

Plotly:如何设置具有分组图例的多个子图?
EN

Stack Overflow用户
提问于 2020-07-01 21:50:35
回答 1查看 4K关注 0票数 3

对于每个子图,我有3条分割线:2017 ,2018和2019年,3次"go.Scatter",每个子图代表一个国家(25个国家),总是这3年。我可以使用子图示例代码,但然后所有的75个图例(25X3)将全部用不同的颜色放在一起,这是混乱的。

我不需要在不同的子图上使用不同的颜色,我可以在所有子图上有3种不同的颜色和3个3年的图例,如果我点击2017年,所有2017年的曲线/线都会在25个子图中消失,这将是理想的。

任何人都可以分享示例代码吗?出于说明的目的,它可以是2而不是25。我在Plotly网站上找不到这个示例代码。

编辑:这是一个示例代码:

代码语言:javascript
运行
复制
from plotly.subplots import make_subplots
import plotly.graph_objects as go
from plotly import offline

fig = make_subplots(rows=3, cols=1)

fig.add_trace(go.Scatter(
    x=[3, 4, 5],
    y=[1000, 1100, 1200],name="2017",
), row=1, col=1)

fig.add_trace(go.Scatter(
    x=[2, 3, 4],
    y=[1200, 1100, 1000],name="2018",
), row=1, col=1)


fig.append_trace(go.Scatter(
    x=[2, 3, 4],
    y=[100, 110, 120],name="2017",
), row=2, col=1)

fig.append_trace(go.Scatter(
    x=[2, 3, 4],
    y=[120, 110, 100],name="2018",
), row=2, col=1)

fig.append_trace(go.Scatter(
    x=[0, 1, 2],
    y=[10, 11, 12],name="2017",
), row=3, col=1)

fig.append_trace(go.Scatter(
    x=[0, 1, 2],
    y=[12, 11, 10],name="2018",
), row=3, col=1)

fig.update_layout(height=600, width=600, title_text="Stacked Subplots")
offline.plot(fig,filename="subplots.html")

我希望只有2个图例: 2017和2018,而不是6个图例,如果所有的2017年都有相同的颜色沿着3个子情节更容易

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-03 17:24:51

legendgroupshowlegend的正确组合应该可以做到这一点。通过下面的设置,所有2017轨迹都分配到相同的legendgroup="2017"。除了第一个之外,所有的2017跟踪都有showlegend=False。当然,2018跟踪也是如此。试试看!

绘图

完整代码

代码语言:javascript
运行
复制
from plotly.subplots import make_subplots
import plotly.graph_objects as go
from plotly import offline

fig = make_subplots(rows=3, cols=1)

fig.add_trace(go.Scatter(x=[3, 4, 5], y=[1000, 1100, 1200],
                         name="2017", legendgroup="2017",
                         line=dict(color='blue')),
              row=1, col=1)

fig.add_trace(go.Scatter(x=[2, 3, 4], y=[1200, 1100, 1000],
                         name="2018",legendgroup="2018",
                         line=dict(color='red')),
              row=1, col=1)


fig.add_trace(go.Scatter(x=[2, 3, 4], y=[100, 110, 120],
                         name="2017", legendgroup="2017",
                         line=dict(color='blue'),
                         showlegend=False),
              row=2, col=1)

fig.append_trace(go.Scatter(x=[2, 3, 4], y=[120, 110, 100],
                            name="2018", legendgroup="2018",
                            line=dict(color='red'),
                            showlegend=False),
                 row=2, col=1)

fig.append_trace(go.Scatter(x=[0, 1, 2], y=[10, 11, 12],
                            name="2017", legendgroup="2017",
                            line=dict(color='blue'),
                            showlegend=False),
                 row=3, col=1)

fig.append_trace(go.Scatter(x=[0, 1, 2], y=[12, 11, 10],
                            name="2018", legendgroup="2018",
                            line=dict(color='red'),
                            showlegend=False),
                 row=3, col=1)

fig.update_layout(height=600, width=600, title_text="Stacked Subplots")
#offline.plot(fig,filename="subplots.html")
fig.show()
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62678377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档