我以这样的方式导入matplotlib
:
import matplotlib as mpl
当我运行以下代码时,错误地说'module'对象没有属性'pylab'被抛出:
x = np.arange(0,10,0.01) # import numpy as np
y = np.sin(x)
mpl.pylab.plot(x,y)
mpl.pylab.show()
当我以另一种方式导入matplotlib
时,没有出现错误:
import matplotlib.pylab as pl
有人知道发生了什么吗?
答案 0 :(得分:10)
要在非交互模式下绘图,您应该使用模块pyplot
,而不是pylab
。
from matplotlib import pyplot
import numpy
pyplot.plot(range(1,100), numpy.sin(range(1,100)))
pyplot.show()
模块pylab
通常不用作matplotlib的子模块,而是用作顶层模块。通常,它以交互模式使用,将numpy,scipy和matplotlib的几个部分组合到一个命名空间中。
>>> from pylab import *
>>> plot(range(1,100), sin(range(1,100)))
>>> show()
答案 1 :(得分:5)
默认情况下,并非始终导入子模块。您可以使用
导入pylab
import matplotlib as mpl
import matplotlib.pylab # Loads the pylab submodule as well
# mpl.pylab is now defined
这就是为什么要import matplotlib.pylab as pl
解决问题的原因。
默认情况下不导入子模块会带来更快的加载时间。它也不会使用未使用的子模块名称污染主模块名称空间。模块的创建者可以定义默认加载哪些子模块(因为pylab
非常繁重,默认情况下不会导入matplotlib
)。
答案 2 :(得分:-1)
如果您尝试导入的模块没有__init__.py
文件,通常会出现此错误。我的安装也遇到了这个错误。我想你必须接受你必须从matplotlib中单独导入matplotlib.pylab。