我想用 Matplotlib 在一组点之间绘制一个实体表面。我想绘制的每个表面都在 3D 空间中的 4 个点之间,并且这些点位于同一平面上(尽管它们的坐标可能会被截断,从而将点推离平面)。从“上方”看,这 4 个点可能如下所示:
请注意,这 4 个点不会形成一个完美的矩形。
如何在 Matplotlib 中绘制这 4 个点之间的曲面?每个点都表示为 [x, y, z]
。我知道 plot_surface
函数,但不确定如何使用它在不是完美的非旋转矩形的多边形中绘制表面。
答案 0 :(得分:1)
您可以使用 ax.plot_trisurf
从三角形构造曲面:
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d as Axes3D
X = np.array([-4.3, -3, 1.2, 1.1])
Y = np.array([-2.3, 2, -4.5, 0.8])
Z = np.array([1., 1., 1., 1.])
fig = plt.figure(figsize=(8,8))
ax = plt.axes(projection='3d')
surf1 = ax.plot_trisurf(X, Y, Z, antialiased=True)
plt.show()
输出:
如果您还想删除分割三角形的线,请将相同的 color
和 edgecolor
传递给 plot_trisurf
。