#python-3.x #matplotlib
#python-3.x #matplotlib
Вопрос:
Я пишу сценарий, параллельно с книгой для своего класса. Мне дали некоторый код и попросили добавить легенду. Проблема в том, что метод, о котором говорится в книге, предполагает использование атрибута .get_lines() для создания легенды. Однако, когда я использую этот атрибут, я получаю сообщение об ошибке:
Ошибка атрибута: объект ‘function’ не имеет атрибута ‘get_lines’
Вот что я написал:
import numpy as np
import matplotlib.pyplot as plt
num_curves = 3
x = np.linspace(0,1,51)
y = np.zeros((x.size, num_curves))
for n in range (num_curves):
y[:,n] = np.sin((n 1)*x*2*np.pi)
plt.plot(x,y)
fig = plt.gca
lines = fig.get_lines()
plt.show()
И вот ошибка, которую я получаю:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-13-608174232b0d> in <module>
9 plt.plot(x,y)
10 fig = plt.gca
---> 11 lines = fig.get_lines()
12 plt.show()
AttributeError: 'function' object has no attribute 'get_lines'
Ответ №1:
Попробуйте:
ax = plt.gca()
lines = ax.get_lines()
()
Пропуская, вы присваиваете функцию gca
переменной fig
вместо ее выполнения.
(Примечание: gca
(get current axes) возвращает объект axes, поэтому fig
лучше вызвать переменную ax
.)