Хранение объекта pyplot в переменной - PullRequest
0 голосов
/ 23 мая 2018

Пожалуйста, обратитесь к следующему коду.

>>> p = plt.plot(year, rank)
>>> p.show()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'show'
>>> plt.plot(year, rank)
[<matplotlib.lines.Line2D object at 0x7f3b56443890>]
>>> plt.show()

Когда я пытаюсь сохранить plt в переменной p, он показывает AttributeError: Но когда напрямую используется plt.show(), он работает,Я не могу понять разницу.Я использую python 2.7 в Ubuntu 16.4 и запускаю программу с terminal.

1 Ответ

0 голосов
/ 23 мая 2018

plt.plot(x,y) возвращает список Line2D объектов.Вы храните этот список в переменной p.Как говорит ошибка, 'list' object has no attribute 'show'.Это можно понимать буквально, потому что show() - это функция в модуле matplotlib.pyplot, а любой нормальный питон list даже не знает о существовании matplotlib.

Конечно, вы можете сохранять список в переменной, но для отображения графика вам нужно использовать plt.show() независимо от того, где вы сохранили возврат любых команд построения

import matplotlib.pyplot as plt
p = plt.plot(x,y)
plt.show()
...