我可以使用以下任一方法在Python中plot:
import matplotlib
matplotlib.pyplot.plot(...)
或者:
import pylab
pylab.plot(...)
这两种方法都使用matplotlib
。
推荐哪种方法作为正确的绘图方法?为什么?
发布于 2018-06-25 00:39:35
如下所示,从官方文档来看,建议使用matplotlib.pyplot
。这不是一个观点。
Matplotlib, pyplot and pylab: how are they related?上的文档也描述了pyplot和pylab之间的区别,它指出:“尽管许多示例使用pylab,但不再推荐它。”
2021-05-06编辑:
来自The pylab API (disapproved)的
由于大量导入到全局命名空间中可能会导致意外的行为,因此强烈建议不要使用pylab。改为使用matplotlib.pyplot。
发布于 2013-05-31 12:33:12
官方文档: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
合作制作一个非常好的交互式外壳,它或多或少地复制了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主循环,你到底应该导入什么取决于你到底在做什么。
https://stackoverflow.com/questions/16849483
复制相似问题