Matplotlib 中的曲面绘图
处理空间数据时,生成曲面可以提供有价值的见解。在 Matplotlib 中,plot_surface 函数用于此目的。但是,它需要 2D 数组形式的输入,这使得它与表示 3D 点的 3 元组列表不兼容。
数据转换
绘制曲面从三元组中,我们需要将数据转换为所需的格式。由于给定的数据缺乏任何底层函数 f(x, y),因此我们必须对点进行三角剖分以创建曲面。
三角剖分和变换
对于三角剖分过程,我们可以使用 [triangulate_points](https://matplotlib.org/stable/gallery/mplot3d/triangulation_demo.html) 函数。它生成连接所提供的点的三角形列表,从而有效地创建表面网格。
三角测量后,我们可以获得 X、Y 和 Z 所需的 2D 数组。这些数组表示顶点的坐标
绘制表面
使用转换后的数据,我们现在可以调用plot_surface:
<code class="python">import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d.art3d import Poly3DCollection # List of 3-tuples representing points data = [(x1, y1, z1), (x2, y2, z2), ...] # Triangulate the points triangles = triangulate_points(data) # Extract 2D arrays for X, Y, and Z X, Y, Z = zip(*triangles) # Plot the surface fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot_surface(X, Y, Z) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') plt.show()</code>
此脚本将生成一个覆盖给定 3D 点的光滑表面。
以上是如何在 Matplotlib 中从 3D 点列表绘制曲面?的详细内容。更多信息请关注PHP中文网其他相关文章!