如何使用 Matplotlib 從點集合建立 3D 曲面圖?

Susan Sarandon
發布: 2024-10-28 03:45:30
原創
399 人瀏覽過

How can I create a 3D surface plot from a collection of points using Matplotlib?

使用Matplotlib 在3D 空間中繪製帶點的曲面

在本文中,我們將探討如何建立包含以下集合的曲面圖:使用Python 的Matplotlib 函式庫(特別是其mplot3d 模組)繪製三維空間中的點。

mplot3d 中的plot_surface 函數需要 X、Y 和 Z 參數的二維數組,而不是像下面這樣的 3 元組列表你有。因此,第一步是將資料準備為必要的格式。

對於曲面,與線圖不同,您將需要一個表示域的 2D 陣列網格。使用離散點(例如您擁有的三元組)會帶來挑戰,因為有多個潛在的三角剖分可以創建曲面。

考慮產生平滑曲面的Python 程式碼,其中f(x, y) = x^2 y:

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = y = np.arange(-3.0, 3.0, 0.05)
X, Y = np.meshgrid(x, y)

# Calculate the Z values for each point in X and Y
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

# Plot the surface
ax.plot_surface(X, Y, Z)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()</code>
登入後複製

在此範例中,X 和Y 是表示域的二維數組,Z 是每個點對應的值數組。 plot_surface 函數使用這些陣列來建立平滑的表面。此方法適用於數學函數定義的表面。

但是,如果您的資料僅由離散 3D 點組成,則可能需要考慮其他選項。

以上是如何使用 Matplotlib 從點集合建立 3D 曲面圖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!