如何使用 Matplotlib 绘制 2D 热图

  1. imshow() 函数绘制 2D 热图
  2. Seaborn 库的 2D 热图
  3. pcolormesh() 函数

要绘制 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()

具有 imshow 功能的 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()

Seaborn 的 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()

输出:

具有 pcolormesh 功能的 2D 直方图

comments powered by Disqus