繪製三維圖形
首先補充一下numpy
中meshgrid
函數的用法。具體含義以下圖所示
python
繪製3D曲面圖
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D #導入三維繪製工具箱
fig = plt.figure() # 建立一個繪圖對象
ax = Axes3D(fig) # #用這個繪圖對象建立一個Axes對象(有3D座標)
X = np.arange(-4, 4, 0.25) #建立從-4到4,步長爲0.25的arange對象
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y) #用這兩個arange對象中的可能取值一一映射去擴充爲全部可能的取樣點
R = np.sqrt(X**2 + Y**2) #函數表示
Z = np.sin(R)
# 具體函數方法可用 help(function) 查看,如:help(ax.plot_surface)
# rstride和cstride表示行列隔多少個取樣點建一個小面
# cmap表示繪製曲面的顏色
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
plt.show()
繪製三維散點圖
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
data = np.random.randint(0, 255, size=[40, 40, 40])
#data = np.random.randint(0, 255, size=[3,40, 40, 40]) #四維
x, y, z = data[0], data[1], data[2]
#x, y, z = data[0,1], data[0,2], data[0,3] #取值時須要[0,index]
ax = plt.subplot(111, projection='3d') # 建立一個三維的繪圖工程
# 將數據點分紅三部分畫,在顏色上有區分度
ax.scatter(x[:10], y[:10], z[:10], c='y') # 繪製數據點
ax.scatter(x[10:20], y[10:20], z[10:20], c='r')
ax.scatter(x[30:40], y[30:40], z[30:40], c='g')
ax.set_zlabel('Z') # 座標軸
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.show()
參考
Numpy中Meshgrid函數介紹及2種應用場景(https://zhuanlan.zhihu.com/p/29663486)web
本文分享自微信公衆號 - AI異構(gh_ed66a0ffe20a)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。微信