【问题标题】:Plotly : Adding legend to subplotPlotly:将图例添加到子图
【发布时间】:2021-02-22 23:14:21
【问题描述】:

我正在使用 python 和 plotly,我正在尝试为我的每个子图添加一个图例。哪个不工作...

当我运行以下代码时,

import plotly
import numpy as np

fig = plotly.subplots.make_subplots(rows=2, cols=1)

y = np.arange(0,10,1)

fig.add_trace(go.Scatter(y=y,name="name1"), row=1,col=1)
fig.add_trace(go.Scatter(y=y**2,name="name2"), row=1,col=1)


fig.add_trace(go.Scatter(y=y,name="name3"), row=2,col=1)
fig.add_trace(go.Scatter(y=y**2,name="name4"), row=2,col=1)

fig.show()

这是我得到的:

但我想要这样的东西:

有什么想法吗?

谢谢!

【问题讨论】:

    标签: python plotly legend subplot


    【解决方案1】:

    当我查看它时,每个子图的图例似乎都对应于 this information。您建议将注释作为替代方案,因此我将它们添加到您的代码中。

    import plotly.graph_objects as go
    from plotly.subplots import make_subplots
    import numpy as np
    
    fig = plotly.subplots.make_subplots(rows=2, cols=1)
    
    y = np.arange(0,10,1)
    
    fig.add_trace(go.Scatter(y=y,name="name1"), row=1,col=1)
    fig.add_trace(go.Scatter(y=y**2,name="name2"), row=1,col=1)
    
    
    fig.add_trace(go.Scatter(y=y,name="name3"), row=2,col=1)
    fig.add_trace(go.Scatter(y=y**2,name="name4"), row=2,col=1)
    
    for row in [1,2]:
        if row == 1:
            fig.add_annotation(dict(x=1.0, y=0.7, xref="paper", yref="paper", 
                                    text='name %d' %row, showarrow=False))
            fig.add_annotation(dict(x=1.0, y=1.0, xref="paper", yref="paper", 
                                    text='name %d' %(row+1), showarrow=False))
        else:
            fig.add_annotation(dict(x=1.0, y=0.05, xref="paper", yref="paper", 
                                    text='name %d' %(row+1), showarrow=False))
            fig.add_annotation(dict(x=1.0, y=0.4, xref="paper", yref="paper", 
                                    text='name %d' %(row+2), showarrow=False))
    
    fig.show()
    

    【讨论】:

    • 这确实是一个聪明的方法。但是,图例不可能完全显示在子图中?
    • 正如我所评论的,目前您似乎无法在子情节中添加图例,因为它已在情节社区中进行了交换。
    • 我也建议查看this solution 来模拟每个子图的图例,因为我更喜欢它
    • @user11696358 感谢您提供有用的信息。
    猜你喜欢
    • 2018-11-15
    • 2019-05-28
    • 2022-01-16
    • 2019-08-08
    • 2021-10-23
    • 2021-08-17
    • 2022-01-23
    • 1970-01-01
    • 2018-05-11
    相关资源
    最近更新 更多