如何使用 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 直方圖