如何在 Matplotlib 中建立曲面圖
Suraj Joshi
2020年6月25日
2020年6月9日
在 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()
這樣,Matplotlib 會在 3D 空間中生成曲面圖。這裡的 cmap 引數用於在 3D 色彩空間中很好地表示我們的資料。圖的顏色隨因變數值的變化而變化。
我們可以根據以下引數自定義圖:
rstride
:行步長,預設值為 10cstride
:列步長,預設值為 10color
:表面的顏色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 is a backend software engineer at Matrice.ai.
LinkedIn