答案:
要向现有的绘图图形添加一条线,只需使用:
fig.add_shape(type='line',...)
细节:
我收集这是您在使用 matplotlib 后看到的帖子。正如评论中所说,axvline
与情节无关。这仅用作您如何使用 matplotlib 完成它的示例。使用 plotly,我要么选择fig.add_shape(go.layout.Shape(type="line")
. 但在您自己尝试之前,请注意它cufflinks
已被弃用。我真的很喜欢袖扣,但现在有更好的选择来构建快速和详细的图表。如果您想坚持与 类似的单行iplot
,我建议使用plotly.express
. 在您的情况下,唯一的障碍是将您的数据集从宽格式更改为plotly.express
. 下面的代码片段就是为了生成以下图:
代码:
import numpy as np
import pandas as pd
import plotly.express as px
from plotly.offline import iplot
#
np.random.seed(123)
X = np.random.randn(1000,3)
df=pd.DataFrame(X, columns=['a','b','c'])
df['id'] = df.index
df = pd.melt(df, id_vars='id', value_vars=df.columns[:-1])
# plotly line figure
fig = px.line(df, x='id', y='value', color='variable')
# lines to add, specified by x-position
lines = {'a':500,'c':700,'a':900,'b':950}
# add lines using absolute references
for k in lines.keys():
#print(k)
fig.add_shape(type='line',
yref="y",
xref="x",
x0=lines[k],
y0=df['value'].min()*1.2,
x1=lines[k],
y1=df['value'].max()*1.2,
line=dict(color='black', width=3))
fig.add_annotation(
x=lines[k],
y=1.06,
yref='paper',
showarrow=False,
text=k)
fig.show()