Plotly子图使用x-unified悬停模式时,如何显示对应Y轴数值?
解决Plotly子图x-unified悬停显示对应Y值的问题
要实现x-unified悬停模式下同时显示对应X位置的所有子图Y值,核心要保证X轴数据对齐+正确配置悬停参数,具体步骤如下:
- 确保所有子图的X轴数据完全匹配:x-unified模式基于相同X坐标位置匹配Y值,不管是连续数值、时间序列还是分类标签,每个trace的X数组必须长度一致、值一一对应。
- 布局中显式启用
hovermode='x unified':这是触发统一悬停的核心设置,同时可通过hoverlabel自定义悬停框样式(可选)。 - 检查每个trace的
hoverinfo配置:默认情况下trace会显示x+y+name,若之前修改过该参数,需显式设置为包含x和y的选项(如hoverinfo='x+y'或hoverinfo='x+y+name'),避免Y值被隐藏。
示例代码
import plotly.graph_objects as go from plotly.subplots import make_subplots # 创建共享X轴的子图 fig = make_subplots(rows=2, cols=1, shared_xaxes=True) # 添加子图1的trace,X数据统一 fig.add_trace( go.Scatter(x=[1, 2, 3, 4], y=[10, 20, 15, 25], name='上行数据'), row=1, col=1 ) # 添加子图2的trace,X数据与子图1完全对齐 fig.add_trace( go.Scatter(x=[1, 2, 3, 4], y=[5, 12, 8, 18], name='下行数据'), row=2, col=1 ) # 配置x-unified悬停模式 fig.update_layout( hovermode='x unified', hoverlabel=dict( bgcolor="white", bordercolor="black" ) ) fig.show()
额外注意事项
如果是分类X轴,需确保所有trace的分类标签顺序、内容完全一致;若使用plotly.express创建子图,需通过facet_row/facet_col并设置hovermode='x unified'来实现相同效果。
内容的提问来源于stack exchange,提问作者Pratik Ghodke
相关产品推荐
相关产品推荐

