建议使用哪种方法:matplotlib或pylab?

时间:2013-05-31 03:52:05

标签: python matplotlib

我发现我可以使用 Python 中的情节

import matplotlib
matplotlib.pyplot.plot(...)

或者:

import pylab
pylab.plot(...)

这两个都使用相同的 matplotlib 绘图代码。

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

2 个答案:

答案 0 :(得分:97)

官方文档:Matplotlib, pyplot and pylab: how are they related?

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

另请注意,matplotlib有两个界面图层,一个由pyplot管理的状态机图层,而OO界面pyplot建立在How can I attach a pyplot function to a figure instance? <之上/ p>

pylab是将一大堆有用的函数(pyplot状态机函数,大多数numpy)批量导入单个名称空间的简洁方法。这个存在的主要原因(据我的理解)是与ipython一起制作一个非常好的交互式shell,它或多或少地复制了MATLAB(使转换变得更容易,因为它更适合玩游戏)。请参阅pylab.pymatplotlib/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主循环,而你应该导入的确切取决于你正在做什么。

答案 1 :(得分:5)

https://matplotlib.org/faq/usage_faq.html#matplotlib-pyplot-and-pylab-how-are-they-related 上的文档还描述了pyglot和pylab之间的区别,并指出:“尽管许多示例都使用pylab,但不再推荐使用。” 。因此,我看不出有任何理由使用 pylab 或担心它。