推荐哪种绘制方式:matplotlib或pylab?[关闭]


88

我看到我可以使用以下任一方法在Python中进行绘图

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

要么:

import pylab
pylab.plot(...)

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

那么,Matplotlib开发人员/文档当前建议使用哪种方法作为更好的绘图方法?为什么?



9
自我参照重复?
疯狂物理学家

4
这不应作为基于意见的内容而关闭。Matplotlib文档现在有一个明确的答案:始终使用matplotlib.pyplot
Bernhard,

Answers:


104

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

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

还要注意,它matplotlib有两个接口层,一个由其管理的状态机层,一个基于pyplot该接口的OO接口pyplot,请参见如何将pyplot函数附加到图形实例?

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

是一个好的开始。

如果您要嵌入matplotlibgui,则不要导入pyplot,因为那样会启动额外的gui主循环,确切地应该导入什么取决于您在做什么。


19
pylab和pyplot之间的区别在于,前者将numpy导入其命名空间。这是为了使其与Matlab的行为更相似。现在首选使用pyplot而不是pylab,因为它更干净。
克里斯蒂安·阿里斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.