官方文档:Matplotlib, pyplot and pylab: how are they related?
这两种导入都可以完全相同,并且运行完全相同的代码,这只是导入模块的不同方式.
另请注意,matplotlib有两个接口层,一个由pyplot管理的状态机层,OO接口pyplot建立在其上,见How can I attach a pyplot function to a figure instance?
pylab是一种干净的方法,可以将一大堆有用的函数(pyplot状态机函数,大多数numpy)批量导入单个名称空间.这个存在的主要原因(据我的理解)是使用ipython来创建一个非常好的交互式shell,它或多或少地复制了MATLAB(使转换变得更容易,因为它更适合玩游戏).见pylab.py和matplotlib/pylab.py
在某种程度上,这纯粹是一种品味问题,取决于你在做什么.
如果您没有嵌入gui(使用非交互式后端进行批量脚本或使用提供的交互式后端之一),典型的做法是
import matplotlib.pyplot as plt
import numpy as np
plt.plot(....)
这不会污染名称空间.我更喜欢这个,所以我可以跟踪来自哪里.
如果你使用
ipython --pylab
这相当于跑步
from pylab import *
现在建议您使用新版本的ipython
ipython --matplotlib
这将设置所有适当的背景细节,使交互式后端工作得很好,但不会批量导入任何东西.您需要显式导入所需的模块.
import numpy as np
import matplotlib.pyplot as plt
是一个好的开始.
如果你在一个gui中嵌入matplotlib,你不想导入pyplot,因为这将启动额外的gui主循环,而你应该导入的确切取决于你正在做什么.