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

如何使用sns.heatmap的annot_kws参数自定义热力图注释内容

seaborn.heatmap 分离颜色映射与注释内容实现方法

核心逻辑是将控制颜色的矩阵、控制注释内容的矩阵分别传给heatmap的对应参数,annot_kws仅用于调整注释文字的显示样式,不负责传入注释内容:

  • data参数:传入用于决定颜色深浅的矩阵(比如典型场景下的z-score标准化矩阵)
  • annot参数:传入用于在网格上显示内容的矩阵(比如典型场景下的原始数值矩阵),要求该矩阵与data传入的矩阵形状完全一致
  • annot_kws参数:可选,传入字典控制注释文字的字号、粗细、颜色等样式
完整可运行代码示例
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# 生成示例原始数据,实际使用时替换为自己的原始矩阵即可
np.random.seed(42)
raw_data = np.random.randint(low=10, high=100, size=(5, 5))
# 计算z-score矩阵,作为颜色映射的依据
zscore_data = (raw_data - raw_data.mean()) / raw_data.std()

# 绘制热力图
plt.figure(figsize=(8, 6))
sns.heatmap(
    data=zscore_data,  # 传入控制颜色深浅的矩阵
    annot=raw_data,    # 传入要在网格上显示的注释内容矩阵
    fmt="d",           # 注释内容格式,整数用"d",浮点数保留两位小数用".2f"
    cmap="RdBu_r",
    center=0,
    annot_kws={        # 可选:调整注释文字的显示样式
        "size": 12,
        "weight": "bold"
    }
)
plt.tight_layout()
plt.show()
常见注意事项
  • 传入的颜色矩阵、注释矩阵必须行列数完全匹配,否则会触发维度不匹配报错
  • fmt参数需要和annot传入的矩阵数据类型对应:如果注释内容是提前处理好的字符串(比如带单位、显著性标记的内容),需要将fmt设为"s"
  • 如果需要自定义注释内容的格式(比如给超过阈值的数值加星号),可以提前构造对应格式的字符串矩阵,再传给annot参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.14 16:15:48