Python 如何使用matplotlib绘制三角形网格长方体?

Python 如何使用matplotlib绘制三角形网格长方体?,python,matplotlib,Python,Matplotlib,我试图实现一个长方体,并用三角形网格表示它。实现长方体的曲面很容易,因此我想通过创建六个曲面并将它们合并在一起来尝试实现长方体。但是,当我尝试绘制垂直于地面的网格曲面时,有一个错误我无法理解: fig = plt.figure() ax = fig.add_subplot(111, projection='3d') x = np.random.rand(20) y = [0] * 20 z =np.random.rand(20) ax.plot_trisurf(x, y, z) plt.sh

我试图实现一个长方体,并用三角形网格表示它。实现长方体的曲面很容易,因此我想通过创建六个曲面并将它们合并在一起来尝试实现长方体。但是,当我尝试绘制垂直于地面的网格曲面时,有一个错误我无法理解:

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.random.rand(20)
y = [0] * 20
z =np.random.rand(20)

ax.plot_trisurf(x, y, z)
plt.show()


RuntimeError: Error in qhull Delaunay triangulation calculation: singular input data (exitcode=2); use python verbose option (-v) to see original qhull error.

如果我切换y和z的值,它可以正常工作,并绘制一个与地面平行的曲面。

调用
plot_trisurf(x,y,z)
函数从
x,y
参数计算2D,并将三角形的
z
坐标设置为相应的
z
参数。 这可能有点误导,因为您传递了三个坐标数组
x,y,z
,因此可能期望以相同的方式考虑它们,而实际情况并非如此

代码崩溃的原因是您的
x,y
输入数据处于退化配置中-所有
x,y
点都在
y=0
线上。这会导致基本的三角剖分计算失败-请参阅我以前的答案和进一步的解释