You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Plotly Express散点图中添加固定Y值的水平线

在Plotly Express散点图中添加贯穿整个图表的水平线

没问题,这个需求用Plotly的add_hline()方法就能轻松解决,完全不用操心x轴的变化——它会自动让水平线贯穿整个图表范围,正好适配你x轴不固定的场景。

直接可用的完整代码

import plotly.express as px
import pandas as pd

df = pd.DataFrame({"x":[0, 1, 2, 3, 4,6,8,10,12,15,18], "y":[0, 1, 4, 9, 16,13,14,18,19,5,12]})
fig = px.scatter(df, x="x", y="y")

# 添加y=5的水平线,可选自定义样式和标注
fig.add_hline(
    y=5,
    line_dash="dash",  # 设置虚线样式
    line_color="red",
    annotation_text="y=5",  # 添加标注文本
    annotation_position="bottom right"  # 标注位置
)

# 添加y=18的水平线
fig.add_hline(
    y=18,
    line_dash="dash",
    line_color="blue",
    annotation_text="y=18",
    annotation_position="top right"
)

fig.show()

为什么推荐add_hline()?

这个方法是Plotly专门为添加水平线设计的,核心优势在于:

  • 无需手动指定x轴的起始/结束值,自动适配当前图表的x轴范围,哪怕你的x轴数据后续发生变化(比如筛选、更新),水平线都会自动贯穿整个新的图表区域。
  • 支持直接设置样式(颜色、线型)和添加标注,一步到位,不用额外处理布局细节。

备选方案:用update_layout()添加形状

如果你更习惯通过布局配置来实现,也可以用shapes参数,但需要手动获取x轴的极值,缺点是x轴变化后需要重新更新极值:

fig.update_layout(
    shapes=[
        dict(
            type="line",
            y0=5, y1=5,
            x0=df['x'].min(), x1=df['x'].max(),
            line=dict(color="red", dash="dash")
        ),
        dict(
            type="line",
            y0=18, y1=18,
            x0=df['x'].min(), x1=df['x'].max(),
            line=dict(color="blue", dash="dash")
        )
    ]
)

显然第一种方法更省心,推荐优先使用add_hline()。

内容的提问来源于stack exchange,提问作者min2bro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:02:52