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

Plotly使用hovermode='y unified'时悬浮标签显示异常问题

你没有误解y unified悬浮模式的预期行为,该模式的设计逻辑确实是在同一y轴坐标下展示所有曲线对应的取值,你遇到的是Plotly针对横向折线图(y轴为数据索引、x轴为曲线值)的默认hover匹配规则导致的异常。

问题根因
  • 取值不对齐:Plotly默认的y unified匹配逻辑为每条曲线独立搜索离光标垂直距离最近的采样点,而非严格匹配全局相同y值。如果你的y轴索引为浮点型,存在精度误差或曲线采样间隔有微小差异,就会出现各曲线匹配到不同y值的情况。
  • 部分值不显示:Plotly默认有hover距离阈值,当某条曲线的最近采样点与光标垂直距离超过阈值时,就算处于同一y区间也不会展示对应数值,和y unified的设计逻辑冲突。
修复方案

直接修改你的代码,在fig = px.line(...)生成图表后、返回前新增以下配置即可:

# 1. 统一所有trace的hover模板,固定y值显示精度
fig.for_each_trace(lambda t: t.update(
    hoveron="points",
    # 可根据你的实际需求调整x和y的显示精度
    hovertemplate="%{fullData.name}: %{x:.3f}<br>深度: %{y:.1f}<extra></extra>"
))

# 2. 修改y轴悬浮匹配规则,强制严格对齐全局y值
fig.update_yaxes(
    showspikes=True,
    spikemode="across",
    spikesnap="data",
    hoverdistance=0, # 0表示关闭距离容错,严格匹配y坐标
    spikedistance=-1 # -1表示无限匹配距离,所有同y值的曲线都会触发悬浮
)

如果调整后仍存在匹配偏差,可提前统一y轴索引的精度,避免浮点误差:

# 生成图表前统一y轴索引精度,保留1位小数(可根据你的采样间隔调整)
curve_df.index = curve_df.index.round(1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:48:01