首頁 >後端開發 >Python教學 >如何在 Matplotlib 中使用 3D 點列表建立曲面圖?

如何在 Matplotlib 中使用 3D 點列表建立曲面圖?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-26 14:55:301002瀏覽

How to Create a Surface Plot in Matplotlib with a List of 3D Points?

Matplotlib 中的曲面圖

建立曲面圖時,plot_surface 函數需要 2D 陣列作為參數來表示 3D 空間中的點。但是,如果您只有 3D 點列表,則需要考慮特定因素。

三角測量點雲

對於 3D 點列表,plot_surface 不能因為將點三角化為曲面的過程不明確,因此直接使用。 Matplotlib 並沒有提供自動將點三角化為曲面的方法。

替代方法:基於網格的曲面

如果您沒有表示曲面的函數,您可以使用fun(x, y) 等函數產生基於網格的表面。在此方法中,您定義點網格並使用給定函數計算對應的 z 值。

<code class="python">import numpy as np
import matplotlib.pyplot as plt

# Define the function
def fun(x, y):
    return x**2 + y

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

# Compute the z-values
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

# Create the surface plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)</code>

此方法可讓您建立穿過給定 3D 點並覆蓋整個網格範圍。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn