考虑表示 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中文网其他相关文章!