Легенда PyPlot: объект 'Poly3DCollection' не имеет атрибута '_edgecolors2d' - PullRequest
0 голосов
/ 05 марта 2019

Следующий фрагмент кода работает нормально, пока я не раскомментирую строку 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' object has no attribute '_edgecolors2d'

Я подумал, что причиной могло быть то, чтоЯ поиграл с параметрами framealpha и frameon в plt.legend () на 2d графиках, но я перезапустил среду выполнения (я работаю в Google Colab Jupyter Notebook), очистил все переменные, и проблема осталась.

Что может быть причиной этой ошибки?

1 Ответ

0 голосов
/ 05 марта 2019

Привет, я обнаружил, что это ошибка, но разработчики библиотеки пытаются ее выяснить.Я нашел следующую ветку о проблеме в git

Их предложение заключается в том, чтобы получить заговор

surf = ax.plot_surface(X, Y, Z, label='h=0') surf._facecolors2d=surf._facecolors3d surf._edgecolors2d=surf._edgecolors3d

...