图表选择可视化指南:热力图:看矩阵与强度(深度版)
用颜色深浅表达二维矩阵中每个格子的数值大小,适合相关性矩阵、混淆矩阵、密度。
分类:📊 统计图 适用:相关系数矩阵、混淆矩阵、时空密度
一、这个图适合谁(适用场景)
- 相关系数矩阵
- 混淆矩阵
- 时空密度
二、图表结构要素
- 行×列=矩阵
- 颜色=数值
- 配标准色阶
- 可加数值标注
三、可视化的底层逻辑
热力图用"颜色(色相/饱和度)"通道把二维矩阵的标量值压缩成一张图,擅长呈现"多对多"关系的结构模式(哪块强、哪块弱、是否成块)。但必须清醒:颜色在感知精度档中排倒数(低于位置/长度/角度),人对"这个格子比那个深多少"的判断很不可靠。所以热力图是"找模式"的工具,不是"读精确值"的工具——凡是需要精确比较的地方,必须辅以数值标注。核心思想:用颜色表达强度的相对结构,用顺序/发散色阶保留数值语义(正负的符号、大小的方向),绝不能用彩虹这类感知不均匀的色阶去编码有序数值。
四、视觉编码与感知推导
颜色映射与色阶选择:颜色 。发散色阶(蓝-白-红)用于有零中心的区间 :
使符号与强度同时可读;顺序色阶(单色由浅入深)用于 。标准化
消除量纲,避免大数量级格子"吸走"全部颜色动态范围。
感知均匀性:在 CIELAB 空间中,等感知差应对应等 。彩虹色阶在蓝-绿-黄段感知不均匀(黄色区被压缩),会造成"视觉上差异大、实际数值差小"的误读,故学术论文推荐顺序/发散的感知均匀色阶(如 viridis、RdBu)。
关系矩阵重排:相关系数矩阵经聚类得到置换 ,重排为 使同源块聚集在对角线附近,结构一目了然;不重排则强相关格子散落,模式被掩盖。
五、怎么画(步骤)
- 先 standardize 再上色,避免量纲掩盖结构。
- 用发散色阶(如蓝-白-红)表现正负。
- 相关系数矩阵上三角可省略避免重复。
- 加数值标签便于精确读。
- 类别顺序按聚类重排更易读。
六、何时用 / 何时不用 / 常见丑图
- 何时用:『多对多』关系的强度对比。
- 何时不用:单序列 → 折线/柱状。
- 常见丑图:彩虹色阶难辨、不标准化、无标注。
七、常见坑
- 未标准化色阶失准
- 彩虹色阶误导
- 忽略重排顺序
八、画图自检清单
- 已标准化
- 色阶合理(发散/连续)
- 关键格有标注
- 顺序已优化
九、配套资源与搭配
- 评价类问题怎么选方法
- Python 数据可视化模板
- 论文图表规范与排版
本指南由 MCM520 资料站自动生成(深度版),配套论文图表规范与可视化模板可在资源页下载。
十、实战案例——Python 绘制 + 图效果
热力图用颜色深浅表达二维矩阵数值,最适合展示相关性矩阵或混淆矩阵。
案例场景:分析房价与面积、房龄、楼层、距地铁距离、绿化率 5 个因素的相关系数。
红色=正相关,绿色=负相关。面积与房价 0.82 强正相关,房龄与房价 -0.55 负相关。
完整代码(Python + matplotlib)
import matplotlib.pyplot as plt
import numpy as np
labels = ['面积', '房龄', '楼层', '距地铁', '绿化率', '房价']
M = np.array([
[1.00, -0.62, 0.10, 0.28, 0.35, 0.82],
[-0.62, 1.00, -0.08, -0.31, -0.22, -0.55],
[0.10, -0.08, 1.00, 0.12, 0.05, 0.08],
[0.28, -0.31, 0.12, 1.00, 0.20, 0.45],
[0.35, -0.22, 0.05, 0.20, 1.00, 0.60],
[0.82, -0.55, 0.08, 0.45, 0.60, 1.00],
])
plt.figure(figsize=(7, 5))
im = plt.imshow(M, cmap='RdYlGn', vmin=-1, vmax=1, aspect='auto')
plt.colorbar(im, shrink=0.8, label='相关系数')
plt.xticks(range(6), labels, rotation=30, ha='right', fontsize=10)
plt.yticks(range(6), labels, fontsize=10)
for i in range(6):
for j in range(6):
plt.text(j, i, f'{M[i][j]:.2f}', ha='center', va='center',
fontsize=9, fontweight='bold',
color='white' if abs(M[i][j]) > 0.5 else 'black')
plt.title('房价影响因素相关性热力图', fontsize=14, fontweight='bold')
plt.tight_layout()
plt.show()
运行效果图
本指南由 MCM520 资料站生成,配套 Python 代码可直接运行。