首页 > 解决方案 > Plotly:将图例添加到子图

问题描述

我正在使用 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()

这就是我得到的:

在此处输入图像描述

但我想要这样的东西:

在此处输入图像描述

任何想法?

谢谢!

标签: pythonplotlylegendsubplot

解决方案


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

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()

在此处输入图像描述


推荐阅读