如何在Plotly图中添加垂直线

12
我正在测试plotly express。
我有最新版本:0.4.1
我试图绘制他们教程中最基本的图表,但是出现了错误。
import plotly.express as px

df = px.data.iris()
fig = px.scatter(df, x="petal_length", y="petal_width")
fig.add_vline(x=2.5, line_width=3, line_dash="dash", line_color="green")
fig.add_hrect(y0=0.9, y1=2.6, line_width=0, fillcolor="red", opacity=0.2)
fig.show()


AttributeError: 'Figure' object has no attribute 'add_vline'

我做错了什么吗?
我只是想让 add_vline 正常工作。
这是如何指南中的第二个示例:https://plotly.com/python/horizontal-vertical-shapes/

2
add_vline 是在 Plotly 4.12 中引入的,请更新您的软件包。 - mosc9575
@mosc9575,您考虑将其添加为答案吗? - CrazyChucky
2个回答

16

从plotly 4.12版本开始,您似乎没有运行此版本,可以添加水平和垂直线条以及矩形。因此针对您的情况,只需使用:

fig.add_vline()

在我的电脑上,您的代码没有问题。这段代码完全正确:

import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="petal_length", y="petal_width")
fig.add_vline(x=2.5, line_width=3, line_dash="dash", line_color="green")
fig.add_hrect(y0=0.9, y1=2.6, line_width=0, fillcolor="red", opacity=0.2)
fig.show()

...产生了这个图形:

输入图片说明

您正在运行哪个版本的Plotly?


为什么vline在y轴上不能无限延伸? - Mth Clv
1
我也遇到了使用plotly 4.12时的这个问题,希望vline可以无限延伸。 - Mth Clv
与此处描述的相同问题 https://github.com/plotly/plotly.py/issues/2979,但没有提供解决方案。 - Mth Clv
谢谢您的快速回答,但是这种解决方法相当冗长而且不太整洁。我有点困惑,因为文档 https://plotly.com/python-api-reference/generated/plotly.graph_objects.Figure.html?highlight=add_vline#plotly.graph_objects.Figure.add_vline 明确说明“向绘图或子图添加一个在 y 维度上无限延伸的垂直线。” - Mth Clv
然而,您在此展示的正是我所面临的问题,而且这并不是我认为应有的行为。 - Mth Clv
显示剩余2条评论

5

要运行最小的示例,您的plotly包必须是最新的,您的plotly.express包也必须是最新的。

import plotly.express as px

df = px.data.iris()
fig = px.scatter(df, x="petal_length", y="petal_width")
fig.add_hline(y=0.9)
fig.add_vrect(x0=0.9, x1=2)
fig.show()

我引用你分享的 文档

add_hlineadd_vlineadd_hrectadd_vrect 是在 Plotly 4.12 中引入的。

请确保您的软件包版本不早于此版本。


我的 plotly-express 已经是最新的了。看起来我需要更新 plotly。 - SCool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接