热力图完全教程:从基因表达到用户行为的数据可视化实战
📅 2026-03-19 · ⏱️ 阅读约 8 分钟 · 热力图 科研图表 数据可视化
热力图(Heatmap)是数据可视化领域中最强大、也最常被误用的图表类型之一。它用颜色深浅来展示二维矩阵中数据的分布和密度,一张好的热力图能在瞬间传达数百甚至数千个数据点的模式。
在科研领域,热力图几乎是生物信息学、基因组学的"标配";在商业领域,它用于用户行为分析、地理数据展示等场景。
本文将全面讲解热力图的原理、类型、适用场景和制作方法。
一、热力图的核心原理
热力图的本质很简单:
行(Y轴)× 列(X轴)→ 每个交叉点用颜色表示一个数值- 颜色越深 → 数值越大(或越小,取决于色阶方向)
- 颜色越浅 → 数值越小(或越大)
人眼对颜色模式的识别非常敏锐,因此热力图可以让你一眼发现数据中的聚类、异常值和趋势。
二、热力图的类型
2.1 经典热力图(Matrix Heatmap)
最常见的形式,展示二维矩阵数据。
| 应用场景 | 行代表 | 列代表 | 色值代表 |
|---|---|---|---|
| 基因表达 | 基因 | 样本 | 表达量 |
| 相关性矩阵 | 变量 | 变量 | 相关系数 |
| 成绩分布 | 学生 | 科目 | 分数 |
| 销售热力 | 地区 | 月份 | 销售额 |
2.2 日历热力图
用日历布局展示每天的数据量,最经典的例子就是 GitHub 的贡献图。
| 应用场景 | 色值代表 |
|---|---|
| GitHub 贡献图 | 每天的 commit 数量 |
| 运动记录 | 每天的运动时长 |
| 销售日报 | 每天的订单量 |
| 科研实验日志 | 每天的实验次数 |
2.3 地理热力图
将数据叠加到地图上,用颜色密度表示地理分布。
| 应用场景 | 色值代表 |
|---|---|
| 流行病学 | 各地区发病率 |
| 环境监测 | 各站点污染物浓度 |
| 商业分析 | 各城市用户密度 |
三、科研中的热力图应用
3.1 基因表达热力图
这是科研中最经典的热力图应用。在转录组学(RNA-seq)、蛋白质组学等领域,热力图用于展示:
- 差异表达基因:上调(红色)vs 下调(蓝色)
- 样本聚类:相似样本聚在一起
- 基因聚类:共表达基因聚在一起
数据格式:
| Gene | Sample_A1 | Sample_A2 | Sample_B1 | Sample_B2 |
|---|---|---|---|---|
| Gene_001 | 2.3 | 2.1 | -1.5 | -1.8 |
| Gene_002 | -0.8 | -0.5 | 3.2 | 3.5 |
| Gene_003 | 1.5 | 1.7 | 0.2 | 0.1 |
在得刻图表中:上传这份数据 → 输入"生成基因表达热力图,红色表示上调,蓝色表示下调" → AI 自动生成。
3.2 相关性矩阵热力图
展示多个变量之间的皮尔逊/斯皮尔曼相关系数:
- +1(深红):完全正相关
- 0(白色):无相关
- -1(深蓝):完全负相关
适用于:
- 探索性数据分析的第一步
- 发现多重共线性
- 筛选相关变量
3.3 实验参数优化热力图
在材料科学、化学工程等领域,经常需要优化多个参数的组合:
| 温度 \ 浓度 | 0.1M | 0.5M | 1.0M | 2.0M |
|---|---|---|---|---|
| 25°C | 12% | 35% | 58% | 42% |
| 37°C | 18% | 52% | 75% | 61% |
| 50°C | 25% | 48% | 82% | 55% |
| 60°C | 15% | 38% | 65% | 40% |
热力图可以一眼看出最优参数组合(50°C × 1.0M → 82%)。
四、商业中的热力图应用
4.1 网站/App 点击热力图
展示用户在页面上的点击分布,指导 UI 优化:
- 红色区域 = 高频点击区
- 蓝色区域 = 低频点击区
4.2 时间×类别销售热力图
| 小时 \ 星期 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 |
|---|---|---|---|---|---|---|---|
| 9:00 | 120 | 115 | 108 | 125 | 130 | 80 | 60 |
| 12:00 | 350 | 340 | 360 | 345 | 380 | 420 | 450 |
| 18:00 | 280 | 290 | 285 | 300 | 350 | 500 | 480 |
一眼看出:周末中午和傍晚是销售高峰。
五、热力图配色方案
选择合适的色阶对热力图的可读性至关重要:
| 色阶类型 | 适用场景 | 配色示例 |
|---|---|---|
| 连续单色 | 只有正值的数据 | 白→蓝 或 白→红 |
| 发散双色 | 有正负值的数据 | 蓝→白→红 |
| 分类色 | 离散类别 | 彩虹色(慎用) |
科研热力图配色建议
- 基因表达:蓝(下调)→ 白 → 红(上调)
- 相关性矩阵:蓝(负相关)→ 白 → 红(正相关)
- 一般数值:白 → 深蓝 或 浅黄 → 深红
配色禁忌
- ❌ 彩虹色(Rainbow) — 看起来花哨但不直观,且对色盲不友好
- ❌ 红绿配色 — 色盲人群无法区分
- ✅ 蓝红系 — 直觉性强,科研论文最常用
六、制作热力图的实用技巧
6.1 数据预处理
- 标准化:如果行与行之间的数值范围差异大,建议做 Z-score 标准化
- 排序:按聚类结果排序(科研)或按数值大小排序(商业)
- 缺失值处理:用灰色或特殊标记表示 NA
6.2 聚类树(Dendrogram)
科研热力图通常会在顶部和左侧加上聚类树,展示样本/基因的层级聚类关系。
6.3 标注
- 数据量小(<100 个单元格)时可以在每个格子中标注具体数值
- 数据量大时只标注色标(Color bar)即可
- 添加行/列的分组标签
6.4 图例(色标)
- 必须包含色标(Color bar),标明数值与颜色的对应关系
- 标注最小值和最大值
- 科研热力图的色标通常放在图表右侧
七、用得刻图表生成热力图
得刻图表支持经典热力图和日历热力图两种类型。
经典热力图
数据格式:矩阵型 Excel
行 = 基因/变量
列 = 样本/时间
值 = 数值
描述示例:
"生成一个热力图,展示各基因在各样本中的表达量"
"用热力图展示各地区各月的销售额分布"
"生成各变量之间的相关性热力图"日历热力图
数据格式:日期 + 数值
Date | Value
2026-01-01 | 5
2026-01-02 | 12
描述示例:
"生成日历热力图,展示每天的订单量"
"用日历热力图展示全年的实验频率"八、常见错误
❌ 不做数据标准化
不同行的数值范围差异很大时,不标准化会导致部分行"看不出差异"。
❌ 色阶范围设置不当
自动色阶可能会被极端值拉偏。设置合理的最小值/最大值可以让主体数据更清晰。
❌ 热力图不附加色标
没有色标的热力图 = 没有 Y 轴的折线图。读者无法将颜色映射到具体数值。
总结
热力图是最适合展示大规模矩阵数据的可视化方式。无论是科研中的基因表达分析,还是商业中的用户行为洞察,一张精心制作的热力图都能让数据模式"一目了然"。
记住:好的热力图 = 合理的配色 + 标准化的数据 + 清晰的色标 + 恰当的排序。
