如何在Plotly图表中高亮显示光标对应的X、Y轴数值?
Plotly实现光标悬停时高亮对应X/Y轴刻度
要实现光标移动时高亮对应X/Y轴的刻度及数值,你可以通过配置Plotly的**轴尖刺(Spike)**属性结合悬停模式来完成,以下是具体实现步骤和修改后的代码:
核心配置说明
hovermode='x':设置悬停模式为X轴触发,光标悬停时会显示对应X位置的所有数据点提示,并触发轴尖刺。- 轴的
spikemode:控制尖刺的显示方式,'across'表示穿过整个图表区域,'marker'表示仅在数据点位置显示,'both'则同时显示两者。 spikecolor/spikethickness/spikedash:分别设置尖刺线的颜色、粗细和线型,用来突出显示对应轴刻度。showspikes=True:显式开启轴尖刺功能,确保高亮效果生效。
修改后的完整代码
import datetime as dt import panel as pn import yfinance as yf import plotly.graph_objs as go pn.extension() # 数据获取 vix_tickers = ['AUDJPY=X'] df = yf.download(vix_tickers, auto_adjust=True, progress=False, ) df = df[["Close"]] df.sort_index(ascending=True, inplace=True) # 创建图表 fig = go.Figure() trace = go.Scatter(x=list(df.index), y=list(df.Close)) fig.add_trace(trace) # 配置布局,添加轴高亮相关设置 fig.update_layout( title="Time series with range slider and selectors", hovermode='x', # 开启X轴触发的悬停模式 xaxis=dict( rangeselector=dict( buttons=list( [ dict(count=1, label="1m", step="month", stepmode="backward"), dict(count=6, label="6m", step="month", stepmode="backward"), dict(count=1, label="YTD", step="year", stepmode="todate"), dict(count=1, label="1y", step="year", stepmode="backward"), dict(step="all"), ] ) ), rangeslider=dict(visible=False), type="date", # X轴尖刺配置 showspikes=True, spikemode='across', spikecolor='#ff4444', spikethickness=2, spikedash='solid' ), yaxis=dict( # Y轴尖刺配置 showspikes=True, spikemode='across', spikecolor='#ff4444', spikethickness=2, spikedash='solid' ) ) fig.show()
效果说明
运行代码后,当你将光标移动到图表上的任意位置时:
- 会自动显示一条垂直于X轴的红色实线,指向对应的X轴刻度;
- 同时显示一条水平于Y轴的红色实线,指向对应数据点的Y轴刻度;
- 配合悬停提示框,能清晰看到当前位置对应的X/Y轴数值。
内容的提问来源于stack exchange,提问作者Pratik Ghodke
相关产品推荐
相关产品推荐

