以下代码片段工作正常,直到我取消注释plt.legend()
line:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-1, 1)
y = np.linspace(-1, 1)
X, Y = np.meshgrid(x, y)
Z = np.sqrt(X**2 * Y)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, label='h=0')
ax.plot(np.zeros_like(y), y, np.zeros_like(y), label='singular points')
# plt.legend()
plt.show()
我收到以下错误:'Poly3DCollection' object has no attribute '_edgecolors2d'
我想原因可能是我玩弄了framealpha
and frameon
二维图中 plt.legend() 的参数,但我重新启动了运行时(我正在 Google Colab Jupyter Notebook 中工作),清除了所有变量,问题仍然存在。
可能是什么原因导致此错误?
您好,我发现这是一个错误,库开发人员仍在尝试解决它。
我在以下位置找到了有关该问题的线程git https://github.com/matplotlib/matplotlib/issues/4067
他们给出的建议是绘制图
surf = ax.plot_surface(X, Y, Z, label='h=0')
surf._facecolors2d=surf._facecolors3d
surf._edgecolors2d=surf._edgecolors3d
如果 matplotlib 版本是 matplotlib 3.3.3 请尝试以下操作
surf._facecolors2d = surf._facecolor3d
surf._edgecolors2d = surf._edgecolor3d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)