关于python:建议使用哪种方式:matplotlib或pylab?

Which is the recommended way to plot: matplotlib or pylab?

我看到我可以使用以下任何一种方法在python中绘图:

1
2
import matplotlib
matplotlib.pyplot.plot(...)

或:

1
2
import pylab
pylab.plot(...)

这两种方法都使用相同的matplotlib绘图代码。

那么,Python社区推荐哪种方法作为更好的绘图方法呢?为什么?


官方文件:matplotlib,pyplot和pylab:它们之间有什么关系?

这两种导入都做了完全相同的事情,将运行完全相同的代码,这只是导入模块的不同方式。

还需要注意的是,matplotlib有两个接口层,一个由pyplot管理的状态机层和一个oo接口pyplot是在上面构建的,请看我如何将pyplot函数附加到一个图形实例上?

pylab是将一系列有用功能(pyplot状态机功能,大多数numpy功能)批量导入单个名称空间的干净方法。这一点存在的主要原因(据我所知)是与ipython合作,制作出一个非常好的交互式shell,或多或少地复制了matlab(使转换更容易,因为它有利于游戏)。见pylab.pymatplotlib/pylab.py

在某种程度上,这纯粹是一个品味的问题,并取决于你在做什么。

如果您没有嵌入到GUI中(使用非交互式后端进行批量脚本或使用提供的某个交互式后端),通常要做的事情是

1
2
3
4
import matplotlib.pyplot as plt
import numpy as np

plt.plot(....)

不会污染名称空间。我更喜欢这个,这样我就可以跟踪东西的来源。

如果你使用

1
ipython --pylab

这相当于跑步

1
from pylab import *

现在建议您在新版本的ipython中使用

1
ipython --matplotlib

这将设置所有适当的背景细节,使交互式后端工作得很好,但不会批量导入任何内容。您将需要显式导入所需的模块。

1
2
import numpy as np
import matplotlib.pyplot as plt

是个好的开始。

如果将matplotlib嵌入到GUI中,则不希望导入Pyplot,因为这将启动额外的GUI主循环,而应该导入的内容具体取决于您正在执行的操作。


https://matplotlib.org/faq/usage_faq.html matplotlib pyplot和pylab之间的关系如何,其中还描述了pyglot和pylab之间的区别,说明:"尽管许多示例使用pylab,但不再推荐使用它。"所以,我看不出有任何理由使用pylab或者担心它。