当处理表示为 3 元组的 3D 点集合时,无法立即清楚plot_surface 函数是否是理想的选择曲面绘图。让我们深入研究细微差别,了解如何为此函数准备数据。
plot_surface 需要 X、Y 和 Z 为二维数组。与函数 f(x, y) -> 的曲面图不同z,您可以在其中提供网格域,点云提出了挑战,因为它需要三角测量。
由于您的数据是 3D 点的列表,因此您需要将其转换为plot_surface可以理解的格式。一种方法是使用 meshgrid 创建网格域,如以下代码片段所示:
<code class="python">import numpy as np data = [(x1,y1,z1),(x2,y2,z2),.....,(xn,yn,zn)] x, y = zip(*data) # Extract x and y coordinates from the tuples X, Y = np.meshgrid(x, y) # Create a grid domain for X and Y # Convert the z coordinates into a 2D array zs = np.array([z for x, y, z in data]).reshape(X.shape)</code>
现在,您已拥有所需的 2D 数组格式的 X、Y 和 Z。
准备好数据后,您可以使用plot_surface继续绘制曲面:
<code class="python">from mpl_toolkits.mplot3d import Axes3D # Enable 3D plotting import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # Create a 3D subplot ax.plot_surface(X, Y, Z)</code>
这应该生成穿过给定点的平滑曲面。
以上是以下是一些适合文章内容的基于问题的标题: * 如何使用 Matplotlib 的 `plot_surface` 函数从 3D 点集合中绘制曲面? * 在 Matplo 中绘制曲面的详细内容。更多信息请关注PHP中文网其他相关文章!