AttributeError: 'Poly3DCollection' object has no attribute '_edgecolors2d'
时间: 2023-12-15 09:32:57 浏览: 265
这个错误通常是由于在使用Axes3D画三维图时,添加了legend图例导致的。解决方法是将legend图例的添加放在绘制完所有图形之后再添加。具体实现方法如下:
```python
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制三维图形
...
# 添加legend图例
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles, labels)
plt.show()
```
相关问题
AttributeError: 'Poly3DCollection' object has no attribute '_facecolors2d'
这个错误是因为在添加3D图的右上角注释时,使用了一个属性'_facecolors2d',但是'Poly3DCollection'对象没有这个属性。为了解决这个问题,可以使用下面的代码替换原来的代码:
p1 = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, linewidth=0, antialiased=False, label='sanwei')
p1._facecolors2d = p1._facecolor3d
p1._edgecolors2d = p1._edgecolor3d
这样就能正确显示图例了。[2]
AttributeError: 'Poly3DCollection' object has no attribute '_facecolors3d'
AttributeError: 'Poly3DCollection' object has no attribute '_facecolors3d' 是由于在使用Axes3D画三维图时,未正确设置Poly3DCollection对象的_facecolors3d属性,导致报错。
解决办法是在ax.legend()之前加入如下代码:
surf._facecolors2d = surf._facecolors3d
surf._edgecolors2d = surf._edgecolors3d
阅读全文