如何使用 Matplotlib 绘制 2D 热图

要绘制 2D 热图,我们可以使用以下任何一种方法:

  • imshow() 函数,使用参数 interpolation='nearest'cmap='hot'
  • Seaborn
  • pcolormesh() 函数

imshow() 函数绘制 2D 热图

我们可以使用 imshow 函数的语法:

matplotlib.pyplot.imshow(X,
                         cmap=None,
                         norm=None,
                         aspect=None,
                         interpolation=None,
                         alpha=None,
                         vmin=None,
                         vmax=None,
                         origin=None,
                         extent=None,
                         shape=<deprecated parameter>,
                         filternorm=1,
                         filterrad=4.0,
                         imlim=<deprecated parameter>,
                         resample=None,
                         url=None,
                         *,
                         data=None,
                         **kwargs)

示例代码:

import numpy as np
import matplotlib.pyplot as plt
data = np.random.random((8, 8))
plt.imshow(data, cmap='cool', interpolation='nearest')
plt.show()

如何使用 Matplotlib 绘制 2D 热图

cmap 是颜色图,我们也可以从这里选择另一个内置的 colormaps。

插值是一种插值方法,可以是 nearestbilinearhamming 等。

Seaborn 库的 2D 热图

Seaborn 库是建立在 Matplotlib 之上的。我们可以使用 seaborn.heatmap() 函数创建 2D 热图。

import numpy as np
import seaborn as sns
import matplotlib.pylab as plt
data = np.random.rand(8, 8)
ax = sns.heatmap(data, linewidth=0.3)
plt.show()

如何使用 Matplotlib 绘制 2D 热图

Seaborn 还在热图的侧面绘制了一个渐变。

pcolormesh() 函数

绘制 2D 热图的另一种方法是使用 pcolormesh() 函数,该函数创建具有非规则矩形网格的伪彩色图。它是 pcolor() 函数的更快替代方法。

import numpy as np
import matplotlib.pyplot as plt
b, a = np.meshgrid(np.linspace(0, 5, 130), np.linspace(0,5, 130))
c = ( a ** 2 + b ** 2) * np.exp(-a ** 2 - b ** 2)
c = c[:-1, :-1]
l_a=a.min()
r_a=a.max()
l_b=b.min()
r_b=b.max()
l_c,r_c  = -np.abs(c).max(), np.abs(c).max()
figure, axes = plt.subplots()
c = axes.pcolormesh(a, b, c, cmap='copper', vmin=l_c, vmax=r_c)
axes.set_title('Heatmap')
axes.axis([l_a, r_a, l_b, r_b])
figure.colorbar(c)
plt.show()

输出:

如何使用 Matplotlib 绘制 2D 热图