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

如何实现Plotly折线图悬停单条时隐藏其余折线且保留坐标轴范围

Plotly折线悬停隐藏其余折线(Jupyter环境)实现方案

可以通过Plotly的FigureWidget绑定鼠标事件实现需求,完整可运行代码如下:

import numpy as np
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go

# 生成测试数据
np.random.seed(42)
data = np.random.randint(0, 10, (5, 10))
df = pd.DataFrame(data)
fig = px.line(data_frame=df)

# 预先固定XY轴范围,避免隐藏折线后坐标轴自动缩放
fig.update_layout(
    xaxis_range=[df.index.min(), df.index.max()],
    yaxis_range=[df.min().min(), df.max().max()]
)

# 转换为支持事件绑定的FigureWidget对象
f = go.FigureWidget(fig)
traces = f.data

# 悬停事件回调:仅显示当前悬停的折线
def hover_callback(trace, points, state):
    if points.point_inds:
        for t in traces:
            t.opacity = 1 if t is trace else 0

# 离开事件回调:恢复所有折线显示
def unhover_callback(trace, points, state):
    for t in traces:
        t.opacity = 1

# 为所有折线绑定事件
for trace in traces:
    trace.on_hover(hover_callback)
    trace.on_unhover(unhover_callback)

# 渲染图表
f

注意事项

  • 该方案仅适用于Jupyter Notebook/JupyterLab运行环境,依赖FigureWidget的客户端事件交互能力
  • 代码中已预先锁定X、Y轴的取值范围,隐藏其余折线后坐标轴不会发生偏移,符合要求
  • 鼠标离开折线后会自动恢复所有折线的显示,不需要额外操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:18:01