2013-02-11 4 views
21

я могу импортировать Matplotlib, но когда я пытаюсь запустить следующее:Matplotlib не имеет атрибута 'pyplot'

matplotlib.pyplot(x) 

я получаю:

Traceback (most recent call last): 
    File "<pyshell#31>", line 1, in <module> 
     matplotlib.pyplot(x) 
AttributeError: 'module' object has no attribute 'pyplot' 

ответ

26

pyplot является суб-модуль matplotlib который Безразлично импортировать с помощью простого import matplotlib.

>>> import matplotlib 
>>> print matplotlib.pyplot 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'pyplot' 
>>> import matplotlib.pyplot 
>>> 

кажется обычным делать: import matplotlib.pyplot as plt в это время вы можете использовать различные функции и классы, которые он содержит:

p = plt.plot(...) 
+0

Пробовал это изначально, получить ImportError: dlopen (/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/_path.so, 2): no найдено подходящее изображение. Нашли: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/m – hanachronism

+1

Похоже, что ваша установка повреждена, возможно, попробуйте выполнить чистую переустановку. –

+0

Выполнено. По-видимому, текущая версия matplotlib у установщика несовместима с 64-разрядной версией Python, поэтому загрузилась 32-разрядная версия и теперь отлично работает. Спасибо за помощь. – hanachronism

11

ли вы импортировать его? Импортировать matplotlib недостаточно.

>>> import matplotlib 
>>> matplotlib.pyplot 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'pyplot' 

но

>>> import matplotlib.pyplot 
>>> matplotlib.pyplot 

работы.

pyplot является подмодулем matplotlib и не сразу импортируется при импорте matplotlib.

Наиболее распространенной формой импорта pyplot является

import matplotlib.pyplot as plt 

Таким образом, ваши заявления не будет слишком долго, например,

plt.plot([1,2,3,4,5]) 

вместо

matplotlib.pyplot.plot([1,2,3,4,5]) 

И: pyplot это не функция, это модуль! Поэтому не называйте это, используйте функции, определенные внутри этого. См. Мой пример выше

+0

Пробовал это, и это не проблема. Разработал это. По-видимому, текущая версия matplotlib у установщика несовместима с 64-битной версией Python, поэтому загрузилась 32-разрядная версия и теперь отлично работает. Спасибо за помощь. – hanachronism

+0

Конечно, всегда устанавливайте версию библиотеки, соответствующую версии вашего интерпретатора ... –