matplotlib没有'pyplot'属性。

65

我能导入 matplotlib,但是当我尝试运行以下代码时:

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'
3个回答

61

pyplotmatplotlib的一个子模块,但它不能仅通过import 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
>>> 

然而,建议将其别名为plt
import matplotlib.pyplot as plt

然后,您可以使用它包含的各种函数和类:
p = plt.plot(...)

最初尝试这个,会得到一个ImportError:dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/_path.so,2):找不到合适的图像。找到: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/m - hanachronism
1
这看起来像是你的安装文件已经损坏了,或许可以尝试重新进行干净的安装。 - Thorsten Kranz
1
已经解决了..显然安装程序提供的当前 matplotlib 版本与 64 位 Python 不兼容,所以我下载了 32 位版本,现在完美运行。不过还是感谢您的帮助。 - hanachronism
我很乐意改进这个答案 :-). 如果有什么不对的地方,请留言,我会尽力解决! - mgilson

44

你导入了吗?仅导入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不是函数,而是一个模块!所以不要调用它,而是使用在这个模块内部定义的函数。请参考上面的示例。


尝试过这个,但它并不是问题所在。最终解决了... 显然,安装程序提供的当前 matplotlib 版本与 64 位 Python 不兼容,因此下载了 32 位版本,现在完美运行。虽然感谢您的帮助。 - hanachronism
当然,始终安装与您解释器版本相对应的库版本... - Thorsten Kranz
2
我在pyplot上也遇到了同样的问题。但是对我来说,“import matplotlib.pyplot as plt”仍然无法工作。我收到了相同的错误提示。 - 2012User

0
简单的答案对我有效,如果你正在导入'librosa'库,只需在'import matplotlib.pyplot as plt'之前导入它。这对我和其他一些遇到类似问题的人有效。

你的答案可以通过额外的支持信息来改进。请编辑以添加更多细节,例如引用或文档,以便他人可以确认你的答案是否正确。你可以在帮助中心找到有关如何撰写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接