在 3d 空间中的点之间绘制曲面

时间:2021-02-19 10:11:30

标签: python matplotlib

我想用 Matplotlib 在一组点之间绘制一个实体表面。我想绘制的每个表面都在 3D 空间中的 4 个点之间,并且这些点位于同一平面上(尽管它们的坐标可能会被截断,从而将点推离平面)。从“上方”看,这 4 个点可能如下所示:

Example of 4 points seen from "above"

请注意,这 4 个点不会形成一个完美的矩形。 如何在 Matplotlib 中绘制这 4 个点之间的曲面?每个点都表示为 [x, y, z]。我知道 plot_surface 函数,但不确定如何使用它在不是完美的非旋转矩形的多边形中绘制表面。

1 个答案:

答案 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()

输出:

enter image description here

如果您还想删除分割三角形的线,请将相同的 coloredgecolor 传递给 plot_trisurf