Matplotlib 热力图函数
热力图,指的是以高亮的方式来显示区域的密度情况,以展示数据的差异性。在 Matplotlib 中,我们可以使用 imshow() 函数来绘制一个热力图。
语法:
plt.imshow(x)说明:
x 用于定义热力图的数据部分,它是一个二维数据,比如二维列表、二维数组或 DataFrame。
示例 1:Matplotlib 绘制热力图
import matplotlib.pyplot as plt
# 绘图
x = [[1, 2], [3, 4], [5, 6]]
plt.imshow(x)
plt.colorbar()
# 显示
plt.show()运行之后,效果如下图所示。

分析:
data 是一个 2 × 3 的二维列表,所以它绘制出来的热力图也是 2 × 3 的方块图。其中最顶部 2 个方块是 [1, 2],中间的 2 个方块是 [3, 4],底部的 2 个方块是 [5, 6]。然后 1 的颜色最深,6 的颜色最浅。
Matplotlib 热力图样式
对于热力图来说,我们可以使用 cmap 参数来定义热力图的颜色,它的常用取值如下表所示。
| 取值 | 效果 |
|---|---|
| plt.cm.gray | 黑 → 灰 → 白 |
| plt.cm.bone | 黑 → 蓝灰 → 白 |
| plt.cm.hot | 黑 → 红 → 白 |
| plt.cm.cool | 青绿 → 浅蓝 → 品红 |
| plt.cm.spring | 品红 → 橙黄 → 黄色 |
| plt.cm.summer | 深绿 → 浅绿 → 黄色 |
| plt.cm.autumn | 红 → 橙 → 黄 |
| plt.cm.winter | 蓝 → 青蓝 → 绿 |
示例 2:热力图颜色
import matplotlib.pyplot as plt
# 绘图
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
plt.imshow(data, cmap=plt.cm.spring)
plt.colorbar()
# 显示
plt.show()运行之后,效果如下图所示。

示例 3:颜色条的长宽
import matplotlib.pyplot as plt
# 绘图
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
plt.imshow(data, cmap=plt.cm.spring)
plt.colorbar(shrink=0.5)
# 显示
plt.show()运行之后,效果如下图所示。

分析:
colorbar() 函数可以使用 shrink 参数来定义颜色条的长宽,shrink=0.5 表示定义颜色条长宽为默认长宽的一半。
最后需要说明的是,Matplotlib 提供的热力图能力有限,使用起来也比较麻烦。在实际开发中,我们更推荐使用后面介绍的 Seaborn 来实现热力图。
