Plotly Heatmap如何为每个数据点单独设置hovertemplate
问题原因
Plotly Heatmap 轨迹的hovertemplate参数仅接受字符串类型的模板输入,不支持直接传入二维数组映射各单元格的悬浮提示。直接传入二维数值数组时,参数类型不匹配,Plotly 无法解析生成合法的提示内容,因此悬浮时无任何提示显示。
实现方案
为每个热力图数据点配置独立的悬浮提示需要搭配customdata参数完成:
- 将每个单元格需要展示的自定义提示内容整理为与
z数组维度完全一致的二维数组,传入customdata参数 - 在
hovertemplate字符串模板中,通过%{customdata}占位符引用对应位置的自定义内容,也可搭配内置占位符%{x}、%{y}、%{z}组合展示坐标、数值等默认信息 - 如果每个点的提示内容结构差异较大,可以直接将每个单元格完整的提示字符串存入
customdata数组,hovertemplate直接设置为"%{customdata}<extra></extra>"即可
模板末尾的
<extra></extra>用于隐藏悬浮提示框默认附带的trace名称侧边栏,无相关需求可省略。
正确代码示例
import plotly.graph_objects as go data = [[1, 2, 3], [1, 2, 3], [1, 2, 3]] # 与z维度一致的自定义提示内容数组 hover_texts = [ ["第一行第一列,数值1", "第一行第二列,数值2", "第一行第三列,数值3"], ["第二行第一列,数值1", "第二行第二列,数值2", "第二行第三列,数值3"], ["第三行第一列,数值1", "第三行第二列,数值2", "第三行第三列,数值3"] ] fig = go.Figure(go.Heatmap( z=data, customdata=hover_texts, hovertemplate="坐标(x,y): (%{x}, %{y})<br>数值: %{z}<br>信息: %{customdata}<extra></extra>" )) fig.show()
内容的提问来源于stack exchange,提问作者user27490
相关产品推荐
相关产品推荐

