首页 > 编程笔记 > Python笔记 阅读:1

Matplotlib imshow()绘制热力图(附带实例)

热力图主要通过颜色的深浅来展示数据的密集度和差异性。如需创建热力图,可以使用 pyplot 模块中的 imshow() 函数或 Axes 对象的 imshow() 方法。

创建基本热力图

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 更改颜色条的长度

相关文章