Matplotlib imshow()绘制热力图(附带实例)
热力图主要通过颜色的深浅来展示数据的密集度和差异性。如需创建热力图,可以使用 pyplot 模块中的 imshow() 函数或 Axes 对象的 imshow() 方法。
下面的代码是使用 pyplot 模块中的 imshow() 函数创建下图所示的热力图,并显示一个颜色条:

图 1 热力图
绘制热力图的数据是通过 NumPy 中的 arange() 函数和 reshape() 方法创建的,先使用 arange() 函数创建一个包含 9 个数字的一维数组,然后使用 reshape() 方法将该数组转换为 3 行 3 列的二维数组。
下面的代码将热力图的颜色设置为灰度配色方案:

图 2 更改热力图的颜色(一)
如需将最大值设置为最深的颜色,将最小值设置为最浅的颜色,可以将上面代码中的 plt.cm.gray 改为 plt.cm.Grays,更改颜色后的热力图如下图所示:

图 3 更改热力图的颜色(二)
plt.cm.gray 中的最后一项 gray 表示具体的颜色。如需获取所有颜色映射选项的名称,可以使用下面的代码:
下面的代码将颜色条的长度缩短为默认的一半:

图 4 更改颜色条的长度
创建基本热力图
imshow() 函数或 imshow() 方法的第一个参数x表示要创建热力图的各项数据,它必须是一个二维列表或二维数组,或者是类似结构的数据类型。创建热力图时必须指定x参数,其他参数都是关键字参数。下面的代码是使用 pyplot 模块中的 imshow() 函数创建下图所示的热力图,并显示一个颜色条:

图 1 热力图
import matplotlib.pyplot as plt import numpy as np x = np.arange(1, 10).reshape(3, 3) plt.imshow(x) plt.colorbar() plt.show()热力图的颜色使用的是默认颜色,通过颜色条可以了解各个值与颜色深浅的对应关系。
绘制热力图的数据是通过 NumPy 中的 arange() 函数和 reshape() 方法创建的,先使用 arange() 函数创建一个包含 9 个数字的一维数组,然后使用 reshape() 方法将该数组转换为 3 行 3 列的二维数组。
更改热力图的颜色
如需更改热力图的颜色,可以为 imshow() 函数或 imshow() 方法指定 cmap 参数,并将其值设置为一个颜色映射选项。下面的代码将热力图的颜色设置为灰度配色方案:
import matplotlib.pyplot as plt import numpy as np x = np.arange(1, 10).reshape(3, 3) plt.imshow(x, cmap=plt.cm.gray) plt.colorbar() plt.show()效果如下图所示:

图 2 更改热力图的颜色(一)
如需将最大值设置为最深的颜色,将最小值设置为最浅的颜色,可以将上面代码中的 plt.cm.gray 改为 plt.cm.Grays,更改颜色后的热力图如下图所示:

图 3 更改热力图的颜色(二)
plt.cm.gray 中的最后一项 gray 表示具体的颜色。如需获取所有颜色映射选项的名称,可以使用下面的代码:
from matplotlib import colormaps print(list(colormaps))
更改颜色条的长度
如需更改颜色条的长度,可以为 colorbar() 函数指定 shrink 参数,并将其值设置为一个大于 0 的数字。下面的代码将颜色条的长度缩短为默认的一半:
import matplotlib.pyplot as plt import numpy as np x = np.arange(1, 10).reshape(3, 3) plt.imshow(x, cmap=plt.cm.Greys) plt.colorbar(shrink=0.5) plt.show()效果如下图所示:

图 4 更改颜色条的长度