如何向图例添加垂直线,通过plotly python中的add_vline方法创建

lmb*_*loo 7 python plotly

使用Python 3.8,Plotly 4.13。

在我的散点图中,我使用add_vline()绘图中的方法添加了多条垂直线。但是,我无法将其添加到图例中,从而允许我打开/关闭垂直线。

如何在图例中添加垂直线?

这是我如何创建情节的示例:

fig = go.Figure()

fig.add_trace(
    go.Scatter(name="name added to legend", datas...)
)

for dt in dates:
    fig.add_vline(x=dt, line_width=1, etc...)
Run Code Online (Sandbox Code Playgroud)

输出类似这样的内容:

在此输入图像描述

使用 创建的所有绘图go.Scatter都会添加到图例中,但不会添加到创建的垂直线fig.add_vline

r-b*_*ers 8

垂直线只是图形的装饰,而不是图形对象,因此它不包含在图例中。因此,如果您想在图例中使用 ON/OFF 功能,您可以在 go.Scatter 中添加一个新功能,并将其用于图例中选择的功能。我修改了官方参考中的示例来创建代码。

import plotly.express as px
import plotly.graph_objects as go
df = px.data.stocks()
dmax = df[['GOOG', 'AAPL', 'AMZN', 'FB', 'NFLX', 'MSFT']].values.max()
dmin = df[['GOOG', 'AAPL', 'AMZN', 'FB', 'NFLX', 'MSFT']].values.min()
fig = go.Figure()

fig.add_trace(go.Scatter(x=df.date, y=df['AAPL'], mode='lines', name='AAPL'))
fig.add_trace(go.Scatter(x=df.date, y=df['GOOG'], mode='lines', name='GOOG'))
fig.add_trace(go.Scatter(x=[df.date[10],df.date[10]], 
                         y=[dmin,dmax], 
                         mode='lines', 
                         line=dict(color='green', width=2, dash='dash'),
                         name='2018-03-12'))

fig.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述