我的拉链也有类似的问题。我支持这样一个论断,那就是Python2.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()
因此,我做了两个改变:替换了行:
from matplotlib.collections import Poly3DCollection
签署人:
from matplotlib.mplot3.art3d import Poly3DCollection。在
我不知道你的进口对帐单是从哪里来的,但我觉得它似乎不起作用
将行:verts = list(zip(x,y,z))改为verts =
[list(zip(x, y, z))]
不知何故,后者似乎奏效了。刚开始接触python之后,我无法给出一个铁板钉钉的解释。然而,这里什么都没有:Poly3DCollection类需要“collection”作为第一个输入参数,因此需要一个列表列表。在这种情况下,只给出一个列表,这被认为是遗漏了一个级别。通过添加另一个级别(通过[…]),它起作用了。在
我不知道这个解释是否有道理,但它很符合我的直觉;)
这些修改似乎起作用了,因为这段代码创建了所需的三维多边形(我注意到,由于这是我的第一篇文章,我不允许发布布丁图的证明…)在
希望这个有用
谨致问候