如何为Plotly parcats/平行分类图自定义hovertemplate并实现节点悬停显示标签
为Plotly平行分类图(parcats)自定义hovertemplate并显示节点标签
一、Plotly Express 实现方式
用px.parallel_categories生成平行分类图时,可结合hover_data传递额外数据,再通过update_traces自定义hovertemplate,直接用%{label}调用节点标签。
示例代码:
import plotly.express as px import pandas as pd # 构造示例数据 df = pd.DataFrame({ "Category1": ["A", "A", "B", "B", "C"], "Category2": ["X", "Y", "X", "Y", "X"], "Value": [10, 20, 15, 25, 30] }) # 生成平行分类图,指定hover数据 fig = px.parallel_categories( df, dimensions=["Category1", "Category2"], color="Value", hover_data={"Value": True} ) # 自定义hover模板,%{label}自动显示节点标签 fig.update_traces( hovertemplate="<b>节点标签:</b> %{label}<br><b>数值:</b> %{customdata[0]}<extra></extra>" ) fig.show()
说明:
hover_data用来指定需要带入hover模板的额外字段,这里将Value传入作为customdata。%{label}是Plotly parcats内置变量,直接对应悬停节点的文本内容;<extra></extra>用于隐藏默认的trace名称,让hover显示更简洁。
二、Plotly Graph Objects 实现方式
用go.Parcats直接构建图形时,需手动配置维度信息,通过customdata传递额外数据,再在hovertemplate中调用节点标签和自定义数据。
示例代码:
import plotly.graph_objects as go import pandas as pd df = pd.DataFrame({ "Category1": ["A", "A", "B", "B", "C"], "Category2": ["X", "Y", "X", "Y", "X"], "Value": [10, 20, 15, 25, 30] }) fig = go.Figure(go.Parcats( dimensions=[ {"label": "分类1", "values": df["Category1"]}, {"label": "分类2", "values": df["Category2"]} ], line={"color": df["Value"], "colorscale": "Viridis"}, customdata=df["Value"].values.reshape(-1, 1), # 传递额外数值数据 hovertemplate="<b>维度:</b> %{dimension.label}<br><b>节点标签:</b> %{label}<br><b>数值:</b> %{customdata[0]}<extra></extra>" )) fig.show()
说明:
dimensions中的label是维度名称,values是该维度下的节点值。%{dimension.label}可显示当前悬停节点所属的维度名称,%{label}显示节点的具体标签文本。
关键注意事项
%{label}是parcats内置的变量,无需额外配置即可直接调用节点标签。- 若需显示自定义额外数据,必须确保数据通过
customdata(Graph Objects)或hover_data(Express)传入,否则无法在hovertemplate中调用。
内容的提问来源于stack exchange,提问作者Justin Patel
相关产品推荐
相关产品推荐

