如何为Plotly的go.Splom散点矩阵悬停标签添加对应列名
go.Splom 散点矩阵悬停标签添加列名解决方案
方法1:使用内置占位符(推荐,Plotly v4.10及以上版本支持)
go.Splom 已经内置了两个专属的悬停占位符:
%{xlabel}:当前子图X轴对应维度的label值,即你配置的列名%{ylabel}:当前子图Y轴对应维度的label值
直接在go.Splom的hovertemplate参数中引用即可,修改后代码如下:
eval_columns = ['col1', 'col2', 'etc'] fig = go.Figure(data=go.Splom( dimensions=[dict(label=col, values=df[col]) for col in eval_columns], showupperhalf=False, text=df['col3'], marker=dict(color=df['col3'], showscale=False, line_color='white', line_width=0.5), # 新增悬停模板配置 hovertemplate=""" <b>%{xlabel}</b>: %{x}<br> <b>%{ylabel}</b>: %{y}<br> <b>分组col3</b>: %{text}<extra></extra> """ ))
末尾的<extra></extra>用于删除悬停标签默认的Trace标识,你可以根据业务需要调整标签的展示内容、格式。
方法2:低版本兼容方案
如果你使用的Plotly版本不支持上述占位符,可以通过生成图表后批量更新子图悬停逻辑实现:
- 先完成
go.Splom的基础配置生成图表 - 遍历所有子图的X、Y轴,获取对应绑定的列名
- 逐个更新子图的悬停模板
示例代码如下:
eval_columns = ['col1', 'col2', 'etc'] fig = go.Figure(data=go.Splom( dimensions=[dict(label=col, values=df[col]) for col in eval_columns], showupperhalf=False, text=df['col3'], marker=dict(color=df['col3'], showscale=False, line_color='white', line_width=0.5), )) # 批量更新子图悬停模板 n_dim = len(eval_columns) base_template = """ <b>{x_col}</b>: %{x}<br> <b>{y_col}</b>: %{y}<br> <b>分组col3</b>: %{text}<extra></extra> """ fig.data[0].hovertemplate = [ [base_template.format(x_col=eval_columns[j], y_col=eval_columns[i]) if i!=j else "" for j in range(n_dim)] for i in range(n_dim) ]
内容的提问来源于stack exchange,提问作者ateuffel
相关产品推荐
相关产品推荐

