Python 打印三维空间中点之间的曲面

Python 打印三维空间中点之间的曲面,python,matplotlib,Python,Matplotlib,我想在一组点之间使用Matplotlib绘制实体曲面。我要绘制的每个曲面都位于三维空间中的4个点之间,并且这些点位于同一平面上(尽管它们的坐标可能会被截断,从而使该点稍微偏离平面)。从“上面”看,这4点可能是这样的: 请注意,这4个点并不是一个完美的矩形。 如何在Matplotlib中的这4个点之间绘制曲面?每个点都表示为[x,y,z]。我知道plot\u surface函数,但不确定如何使用它在一个不是完美的非旋转矩形的多边形中绘制曲面。您可以使用ax.plot\u trisurf从三角形构

我想在一组点之间使用Matplotlib绘制实体曲面。我要绘制的每个曲面都位于三维空间中的4个点之间,并且这些点位于同一平面上(尽管它们的坐标可能会被截断,从而使该点稍微偏离平面)。从“上面”看,这4点可能是这样的:

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

您可以使用
ax.plot\u 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()
输出:


如果您还想删除分割三角形的线,请将相同的
颜色
边色
传递给
绘图_trisurf

谢谢,这看起来很有希望。然而,我遇到了一个问题。你对如何解决这个问题有什么建议吗?以下代码生成错误
ValueError:x和y数组必须至少包含3个唯一点
:x=[-0.98424006,-0.35771427,-0.98424006,-0.35771427]y=[-1.0222235,-1.0222235,-0.4215349,-0.4215349]Z=[-1.3747598,-1.3747598,-1.3747598,-1.3747598,-1.3747598]ax u trisurf(x,y,Z,抗锯齿=True)@AntonGildebrand我无法重现这种行为,因为这些坐标对我有效。很抱歉,我发布了错误的值。正确的是:X=[-0.98424006,-0.35771427,-0.35771427,-0.98424006]Y=[-1.3747598,-1.3747598,-1.3747598,-1.3747598]Z=[-1.0222235,-1.0222235,-0.4215349,-0.4215349]——安东吉尔德布兰德说的正是错误:画三角形需要3点。如果您只有2条(因为您提供的4条中有2条是相同的),则程序无法绘制线条。如果您这样做不是出于错误,而是想绕过此消息,只需更改相同X/Y对的第6位小数,使这些对的差值略大于0。(例如-0.9842405和-0.98424006有效)。这当然是一个解决方案,尽管有点难看。奇怪的是,切换Y/Z坐标向量的顺序使其工作(但当然会使平面看起来出错)