Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyPlot图例:';Poly3DCollection&x27;对象没有属性'_edgecolors2d和x27;_Python_Matplotlib_Mplot3d - Fatal编程技术网

Python PyPlot图例:';Poly3DCollection&x27;对象没有属性'_edgecolors2d和x27;

Python PyPlot图例:';Poly3DCollection&x27;对象没有属性'_edgecolors2d和x27;,python,matplotlib,mplot3d,Python,Matplotlib,Mplot3d,在我取消注释plt.legend()行之前,以下代码段工作正常: 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

在我取消注释
plt.legend()
行之前,以下代码段工作正常:

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”对象没有属性“\u edgecolors2d”

我认为原因可能是我在2d绘图中使用了plt.legend()的
framealpha
frameon
参数,但我重新启动了运行时(我在Google Colab Jupyter笔记本中工作),清除了所有变量,问题依然存在


是什么导致了这个错误?

嗨,我发现这是一个bug,库开发人员仍在试图找出它。 我在中找到了关于该问题的以下线索

他们提出的建议是要搞清楚阴谋

surf=ax.plot\u曲面(X,Y,Z,label='h=0')surf.\u facecolors2d=surf.\u facecolors3d-surf.\u edgecolors2d=surf.\u edgecolors3d

如果matplotlib版本是matplotlib 3.3.3,请尝试以下操作

surf.\u facecolors2d=surf.\u facecolor3d surf.\u edgecolors2d=surf.\u edgecolor3d

更新至@AmilaMGunawardana的答案 从
matplotlib 3.3.3
开始,
\u facecolors3d
\u edgecolors3d
不存在。因此,与此相反:

surf._facecolors2d = surf._facecolors3d
surf._edgecolors2d = surf._edgecolors3d
这将导致类似的
属性错误
,请尝试以下操作:

surf._facecolors2d = surf._facecolor3d
surf._edgecolors2d = surf._edgecolor3d
我不得不回答这个问题,而不是发表评论,因为我的代表性不高

ax._facecolors2d = ax._facecolor

正在Matplotlib 3.3.4中为我工作。

谢谢更新