如何实现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
相关产品推荐
相关产品推荐

