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

如何用同尺寸df2设置热力图单元格颜色,同时显示df1数值

实现思路与代码

要实现单元格显示df1数值、颜色对应df2的seaborn热力图,关键是分离颜色数据源和标注文本源,利用seaborn.heatmap的参数直接实现:

核心步骤

  • 将data参数指定为df2:单元格的颜色完全由df2的数值映射决定
  • 设置annot=df1:每个单元格内显示df1的数值
  • 通过fmt参数控制标注数值的格式(整数用"d",浮点数用".2f"等)

示例代码

import seaborn as sns
import pandas as pd
import numpy as np

# 生成示例DataFrame(坐标轴完全一致)
np.random.seed(42)
df1 = pd.DataFrame(np.random.randint(0, 100, (5, 5)), columns=list('ABCDE'), index=list('abcde'))
df2 = pd.DataFrame(np.random.rand(5, 5), columns=list('ABCDE'), index=list('abcde'))

# 绘制目标热力图
ax = sns.heatmap(
    data=df2,          # 控制颜色的数据源
    annot=df1,         # 显示的文本内容
    fmt="d",           # 标注格式(这里df1是整数,用d;浮点数可改为".1f")
    cmap="viridis",    # 颜色映射方案
    annot_kws={"size": 10}  # 可选:调整标注字体大小
)

错误原因说明

你之前尝试基于df2配置cmap但颜色仍关联df1,是因为误将df1传给了data参数——seaborn热力图的颜色始终由data参数的数值决定,cmap只是定义颜色和数值的映射规则,而非替换数据源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:42:10