get_lines() не работает для matplotlib

#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 .)