首页  >  文章  >  后端开发  >  如何在 Matplotlib 中使用 3D 点列表创建曲面图?

如何在 Matplotlib 中使用 3D 点列表创建曲面图?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-26 14:55:30812浏览

How to Create a Surface Plot in Matplotlib with a List of 3D Points?

Matplotlib 中的曲面图

创建曲面图时,plot_surface 函数需要 2D 数组作为参数来表示 3D 空间中的点。但是,如果您只有 3D 点列表,则需要考虑具体因素。

三角测量点云

对于 3D 点列表,plot_surface 不能由于将点三角化为曲面的过程不明确,因此直接使用。 Matplotlib 没有提供自动将点三角化为曲面的方法。

替代方法:基于网格的曲面

如果您没有表示曲面的函数,您可以使用 fun(x, y) 等函数生成基于网格的表面。在此方法中,您定义点网格并使用给定函数计算相应的 z 值。

<code class="python">import numpy as np
import matplotlib.pyplot as plt

# Define the function
def fun(x, y):
    return x**2 + y

# Create a meshgrid
x = y = np.arange(-3.0, 3.0, 0.05)
X, Y = np.meshgrid(x, y)

# Compute the z-values
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

# Create the surface plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)</code>

此方法允许您创建穿过给定 3D 点并覆盖整个网格范围。

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

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