You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Plotly Express(px.imshow)热力图中隐藏重复值?

在Plotly Express中隐藏热力图的重复值

要实现类似Seaborn中mask的效果,隐藏对称矩阵的重复值,可以通过手动生成文本矩阵并替换指定位置内容为空字符串,再传递给热力图的text属性来实现,具体步骤如下:

  • 生成对称矩阵的mask:比如要隐藏上三角(不含对角线)或下三角,用numpy创建布尔矩阵
  • 基于mask构建文本矩阵:将mask对应的位置的值替换为空字符串
  • 更新Plotly热力图的text属性,替换默认的text_auto生成的文本

以下是修改后的可运行代码:

import pandas as pd
import plotly.express as px
import numpy as np

heatmap_data = pd.DataFrame(
    {'user1': {'user1': 1,
               'user2': 0.5267109866774764,
               'user3': 0.905914413030722},
    'user2': {'user1': 0.5267109866774764,
              'user2': 1,
              'user3': 0.5160264783692895},
    'user3': {'user1': 0.905914413030722,
              'user2': 0.5160264783692895,
              'user3': 1}
    })

# 创建mask:隐藏上三角(不含对角线),如需隐藏下三角改用np.tril
mask = np.triu(np.ones_like(heatmap_data, dtype=bool), k=1)

# 构建文本矩阵,mask位置设为空字符串
text_matrix = heatmap_data.astype(str)
text_matrix[mask] = ""

fig = px.imshow(heatmap_data, zmin=0, zmax=1, 
                color_continuous_scale="Plasma")
# 更新trace的text和texttemplate,实现自定义文本显示
fig.update_traces(text=text_matrix.values, texttemplate="%{text}", textfont={"size":12})

fig.show()

关键说明

  • np.triu用于生成上三角的mask,k=1表示排除对角线;如果需要隐藏下三角,改用np.tril并设置对应k值
  • 手动构建text_matrix时,将需要隐藏的位置设为空字符串,这样热力图对应位置就不会显示文本
  • 关闭px.imshow的text_auto,转而用update_traces设置text属性,实现精准控制文本显示

内容的提问来源于stack exchange,提问作者Leonardo Ferreira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 05:21:55