首页  >  文章  >  后端开发  >  如何使用 Matplotlib 从点集合创建 3D 曲面图?

如何使用 Matplotlib 从点集合创建 3D 曲面图?

Susan Sarandon
Susan Sarandon原创
2024-10-28 03:45:30392浏览

How can I create a 3D surface plot from a collection of points using Matplotlib?

使用 Matplotlib 在 3D 空间中绘制带有点的曲面

在本文中,我们将探讨如何创建包含以下集合的曲面图:使用 Python 的 Matplotlib 库(特别是其 mplot3d 模块)绘制三维空间中的点。

mplot3d 中的plot_surface 函数需要 X、Y 和 Z 参数的二维数组,而不是像下面这样的 3 元组列表你有。因此,第一步是将数据准备为必要的格式。

对于曲面,与线图不同,您将需要一个表示域的 2D 数组网格。使用离散点(例如您拥有的三元组)会带来挑战,因为有多个潜在的三角剖分可以创建曲面。

考虑生成平滑曲面的 Python 代码,其中 f(x, y) = x^2 y:

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

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)

# Calculate the Z values for each point in X and Y
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

# Plot the surface
ax.plot_surface(X, Y, Z)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()</code>

在此示例中,X 和 Y 是表示域的二维数组,Z 是每个点对应的值数组。 plot_surface 函数使用这些数组来创建平滑的表面。此方法适用于由数学函数定义的表面。

但是,如果您的数据仅由离散 3D 点组成,则可能需要考虑其他选项。

以上是如何使用 Matplotlib 从点集合创建 3D 曲面图?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn