为什么matplotlib没有属性'pylab'?

YOn*_*Ong 4 python matplotlib

我这样导入matplotlib:

import matplotlib as mpl
Run Code Online (Sandbox Code Playgroud)

当我运行以下代码时,抛出了'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()
Run Code Online (Sandbox Code Playgroud)

当我matplotlib以另一种方式导入时,没有出现错误 :

import matplotlib.pylab as pl
Run Code Online (Sandbox Code Playgroud)

有人知道发生了什么吗?

Chi*_*chi 10

要以非交互模式绘图,您应该使用模块pyplot,而不是pylab.

from matplotlib import pyplot
import numpy

pyplot.plot(range(1,100), numpy.sin(range(1,100)))
pyplot.show()
Run Code Online (Sandbox Code Playgroud)

该模块pylab通常不用作matplotlib的子模块,而是用作顶级模块.通常,它以交互模式使用,将numpy,scipy和matplotlib的几个部分组合到一个命名空间中.

>>> from pylab import *
>>> plot(range(1,100), sin(range(1,100)))
>>> show()
Run Code Online (Sandbox Code Playgroud)


Eri*_*got 5

默认情况下,并不总是导入子模块.您可以导入pylab

import matplotlib as mpl
import matplotlib.pylab  # Loads the pylab submodule as well
# mpl.pylab is now defined
Run Code Online (Sandbox Code Playgroud)

这就是为什么要import matplotlib.pylab as pl为您解决问题的原因.

默认情况下不导入子模块会带来更快的加载时间.它也不会使用未使用的子模块名称污染主模块名称空间.模块的创建者可以定义默认加载哪些子模块(因为pylab它很重,默认情况下不会导入matplotlib).