如何使用循环在 Ploty 散点图中绘制 N 条垂直线?

How to plot N vertical lines in a Ploty scatter plot using a loop?

我想在 Ploty 的散点图中添加 N 条垂直线。 如果我对每一行重复使用此指令,我的代码就可以工作: fig.add_vline(x=lineN) , 但我不想手动添加 N 指令,所以我尝试遍历 N 行的列表。我没有得到错误,但是,我得到了没有垂直线的散点图。

这是我的代码现在的样子(仅用两行测试):

line5=pd.to_datetime('2017-06-7 17:29:57')
line8=pd.to_datetime('2017-06-7 19:08:09')
list=[5,8] 
fig=px.scatter(df,x='time',y='height')
fig.update_layout(autosize=False,width=1100,height=400,)
for number in list:
    fig.add_vline(x="line%s" %number)
fig.show()

这就是我所期望的图形的样子:

感谢您的帮助!

  • 根据你的图像,xaxisdatetime
  • 因此,只要您提供给 x 的值类型正确,添加多行就很简单
  • 下面的代码模拟您的数据框并向图中添加 20 条随机选择的线
import numpy as np
import pandas as pd

df = pd.DataFrame(
    {
        "time": pd.date_range("6-Jul-2017", freq="90S", periods=1000),
        "height": np.sin(np.linspace(-np.pi * 2, np.pi * 2, 1000))*np.random.uniform(.9,1.1,1000),
    }
)
fig = px.scatter(df, x="time", y="height")

for t in df.sample(20)["time"].dt.to_pydatetime():
    fig.add_vline(x=t, line_width=2, line_dash="dash", line_color="red")
    

fig