我在拉链方面遇到了类似的问题.我支持论文它是python 2.x vs 3.x的东西.
但是,我发现某处显然有效:
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)
x = [0, 1, 1, 0]
y = [0, 0, 1, 1]
z = [0, 1, 0, 1]
verts = [list(zip(x, y, z))]
print(verts)
ax.add_collection3d(Poly3DCollection(verts), zs='z')
plt.show()
我因此做了两处改动:
>更换了一行:
来自matplotlib.collections导入Poly3DCollection
通过:
来自matplotlib.mplot3.art3d导入Poly3DCollection.
我不知道你的import语句来自哪里,但它似乎对我不起作用
>将行:verts = list(zip(x,y,z))更改为verts =
[list(zip(x,y,z))]
不知何故,后者似乎有效.刚刚开始使用python,我无法提供一个铁腕的解释.但是,这里什么都没有:Poly3DCollection类需要第一个输入参数作为“集合”,因此需要列表.在这种情况下,仅给出列表,假设因此错过了级别.通过添加另一个级别(通过[…])它工作.
我不知道这个解释是否有意义,但它直观地适合我;)
这些修改似乎有效,因为这段代码创建了所需的3D多边形(我注意到,因为这是我的第一篇文章,所以我不允许发布一个布丁证明数字……)
希望这很有用,
亲切的问候