如何在Plotly的hovermode='x unified'模式下重排序悬浮框信息
调整Plotly统一悬浮框的trace顺序方案
Plotly的x unified模式下,悬浮框里的trace顺序完全跟着你往figure里添加trace的顺序走,所以不用找特殊配置,直接调整trace的添加顺序就行——把你想放最前面的Iris-virginica先加进去,接着是Iris-versicolor,最后加Iris-setosa,就能实现你要的顺序。
下面是完整的代码示例,用鸢尾花数据集演示:
import plotly.graph_objects as go import seaborn as sns # 加载鸢尾花数据集 iris = sns.load_dataset("iris") # 创建figure对象 fig = go.Figure() # 1. 先添加紫色的Iris-virginica trace(悬浮框首位) fig.add_trace(go.Scatter( x=iris[iris["species"] == "virginica"]["sepal_length"], y=iris[iris["species"] == "virginica"]["sepal_width"], name="Iris-virginica", marker_color="#9933ff", # 紫色 hovertemplate="Iris-virginica<br>花萼长度: %{x}<br>花萼宽度: %{y}<extra></extra>" )) # 2. 再添加绿色的Iris-versicolor trace(悬浮框第二位) fig.add_trace(go.Scatter( x=iris[iris["species"] == "versicolor"]["sepal_length"], y=iris[iris["species"] == "versicolor"]["sepal_width"], name="Iris-versicolor", marker_color="#33cc33", # 绿色 hovertemplate="Iris-versicolor<br>花萼长度: %{x}<br>花萼宽度: %{y}<extra></extra>" )) # 3. 最后添加蓝色的Iris-setosa trace(悬浮框末位) fig.add_trace(go.Scatter( x=iris[iris["species"] == "setosa"]["sepal_length"], y=iris[iris["species"] == "setosa"]["sepal_width"], name="Iris-setosa", marker_color="#3366ff", # 蓝色 hovertemplate="Iris-setosa<br>花萼长度: %{x}<br>花萼宽度: %{y}<extra></extra>" )) # 设置统一悬浮框模式 fig.update_layout( hovermode="x unified", title="鸢尾花萼尺寸分布", xaxis_title="花萼长度", yaxis_title="花萼宽度" ) # 显示图表 fig.show()
关键说明
- 严格按照你想要的悬浮框顺序调用
add_trace,先添加的trace会出现在悬浮框最上方 - 每个trace的
hovertemplate可以保持独立配置,x unified模式会自动整合这些模板内容 hovertemplate里的<extra></extra>用来去掉默认的trace名称后缀,避免重复显示物种名
运行代码后,鼠标悬停时的悬浮框顺序就会是:紫色Iris-virginica在前,接着是绿色Iris-versicolor,最后是蓝色Iris-setosa。
内容的提问来源于stack exchange,提问作者Bob McBobson
相关产品推荐
相关产品推荐

