如何用同尺寸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
相关产品推荐
相关产品推荐

