如何在 Matplotlib 中建立曲面圖

Suraj Joshi 2020年6月25日 2020年6月9日
如何在 Matplotlib 中建立曲面圖

在 Matplotlib 中,我們使用 mplot3d 工具包進行 3-D 分析和視覺化,其中包含基於 Matplotlib 的 2-D 函式構建的 3-D 繪圖方法。我們可以通過將 projection='3d'引數傳遞給 Matplotlib 中任何軸的建立函式來建立 3-D 軸。初始化 3-D 軸後,我們可以使用 plot_surface() 方法生成曲面圖。

Axes3D.plot_surface() 方法

我們可以使用 Axes3D.plot_surface(X, Y, Z, *args, **kwargs) 方法建立表面圖其中 X,Y 和 Z 均為二維陣列。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d

fig = plt.figure(figsize=(8,6))
ax3d = plt.axes(projection="3d")

xdata = np.linspace(-3,3,100)
ydata = np.linspace(-3,3,100)
X,Y = np.meshgrid(xdata,ydata)
Z = 1/(1+np.exp(-X-Y))

ax3d = plt.axes(projection='3d')
ax3d.plot_surface(X, Y, Z,cmap='plasma')
ax3d.set_title('Surface Plot in Matplotlib')
ax3d.set_xlabel('X')
ax3d.set_ylabel('Y')
ax3d.set_zlabel('Z')

plt.show()

使用 plot_surface 在 matplotlib 中繪製曲面圖

這樣,Matplotlib 會在 3D 空間中生成曲面圖。這裡的 cmap 引數用於在 3D 色彩空間中很好地表示我們的資料。圖的顏色隨因變數值的變化而變化。

我們可以根據以下引數自定義圖:

  • rstride:行步長,預設值為 10
  • cstride:列步長,預設值為 10
  • color:表面的顏色
  • cmap:表面的顏色圖
  • facecolors:表面中每個補丁的面部顏色
  • norm:Normalize 的一個例項,用於將值對映到顏色
  • vmin:要對映的最小值
  • vmax:要對映的最大值
  • shade:是否遮罩臉部顏色
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d

fig = plt.figure(figsize=(8,6))
ax3d = plt.axes(projection="3d")

xdata = np.linspace(-3,3,100)
ydata = np.linspace(-3,3,100)
X,Y = np.meshgrid(xdata,ydata)
Z = 1/(1+np.exp(-X-Y))

ax3d = plt.axes(projection='3d')
surf=ax3d.plot_surface(X, Y, Z, rstride=7, cstride=7, cmap="viridis")
fig.colorbar(surf, ax=ax3d)
ax3d.set_title('Surface Plot in Matplotlib')
ax3d.set_xlabel('X')
ax3d.set_ylabel('Y')
ax3d.set_zlabel('Z')

plt.savefig("Customized Surface Plot.png")

plt.show()

定製曲面圖

在這個例子中,我們通過使用 colorbar() 方法在圖形中新增一個顏色條,並將表面繪圖物件傳遞給該方法,這使圖形更具資訊性。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn