考慮表示 3D 空間中的點的 3 元組列表,任務是產生覆蓋這些點的曲面。
使用 mplot3d 套件中的plot_surface 需要 X、Y 和 Z 的二維數組形式的輸入資料。要轉換給定的資料結構,需要考慮一些因素。
在下列情況下曲面與線圖不同,您需要使用二維陣列定義覆蓋域的網格。當僅處理 3D 點列表時,三角測量變得至關重要。這是因為給定的點雲有多種可能的三角剖分。
對於光滑的表面,可以採取以下方法:
<code class="python">import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import random def fun(x, y): return x**2 + y 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) zs = np.array(fun(np.ravel(X), np.ravel(Y))) Z = zs.reshape(X.shape) ax.plot_surface(X, Y, Z) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') plt.show()</code>
此程式碼使用 meshgrid 定義網格,產生對應的Z值,並使用plot_surface建立曲面圖。生成的表面提供了底層資料的平滑表示。
以上是如何使用 Matplotlib 從分散的資料建立平滑的 3D 曲面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!