我有一个 3 元组列表,表示 3D 空间中的一组点。我想绘制一个覆盖所有这些点的曲面。
The plot_surface
函数在mplot3d
包要求参数 X、Y 和 Z 为二维数组。是plot_surface
绘制曲面的正确函数以及如何将数据转换为所需的格式?
data = [(x1,y1,z1),(x2,y2,z2),.....,(xn,yn,zn)]
对于表面,它与三元组列表有点不同,您应该在二维数组中传递域的网格。
如果你拥有的只是 3d 点列表,而不是某个函数f(x, y) -> z
,那么您就会遇到问题,因为有多种方法可以将 3d 点云三角化为曲面。
这是一个光滑表面的例子:
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
# Axes3D import has side effects, it enables using projection='3d' in add_subplot
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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)