Python plot_surface(Axes3D)方法:繪制3D圖形


3D 圖形需要的數據與等高線圖基本相同:X、Y 數據決定坐標點,Z 軸數據決定 X、Y 坐標點對應的高度。與等高線圖使用等高線來代表高度不同,3D 圖形將會以更直觀的形式來表示高度。

為了繪制 3D 圖形,需要調用 Axes3D 對象的 plot_surface() 方法來完成。

下面程序將使用與前面等高線圖相同的數據來繪制 3D 圖形,此時將看到程序會以更直觀的形式來顯示高度。

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(12, 8))
ax = Axes3D(fig)
delta = 0.125
# 生成代表X軸數據的列表
x = np.arange(-3.0, 3.0, delta)
# 生成代表Y軸數據的列表
y = np.arange(-2.0, 2.0, delta)
# 對x、y數據執行網格化
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
# 計算Z軸數據(高度數據)
Z = (Z1 - Z2) * 2
# 繪制3D圖形
ax.plot_surface(X, Y, Z,
    rstride=1,  # rstride(row)指定行的跨度
    cstride=1,  # cstride(column)指定列的跨度
    cmap=plt.get_cmap('rainbow'))  # 設置顏色映射
# 設置Z軸范圍
ax.set_zlim(-2, 2)
# 設置標題
plt.title("3D圖")
plt.savefig("d:/test.png")
plt.show()

 

上面程序開始准備了和前一個程序相同的數據,只是該程序將 delta 設置為 0.125,這樣可以避免生成太多的數據點(在繪制 3D 圖形時,計算開銷較大,如果數據點太多, Matplotlib 將會很卡)。

程序中第 20 行代碼調用 Axes3D 對象的 plot_surface() 方法來繪制 3D 圖形,其中 X、Y 參數負責確定坐標點,Z 參數決定 X、Y 坐標點的高度數據。

運行上面程序,可以看到如圖 1 所示的 3D 圖形。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM