推荐的绘图方法是:matplotlib 还是 pylab?
Posted
技术标签:
【中文标题】推荐的绘图方法是:matplotlib 还是 pylab?【英文标题】:Which is the recommended way to plot: matplotlib or pylab? 【发布时间】:2013-05-26 19:32:51 【问题描述】:我可以在 Python 中绘图,使用:
import matplotlib
matplotlib.pyplot.plot(...)
或者:
import pylab
pylab.plot(...)
这两个都使用matplotlib
。
推荐哪种正确的绘图方法?为什么?
【问题讨论】:
【参考方案1】:官方文档: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
是一个好的开始。
如果您将 matplotlib
嵌入到 gui 中,您不想导入 pyplot,因为这会启动额外的 gui 主循环,而您应该导入的确切内容取决于您正在做什么。
【讨论】:
pylab 和 pyplot 的区别在于前者将 numpy 导入到其命名空间中。这是为了使它与 matlab 的行为更加相似。现在首选使用 pyplot 而不是 pylab,因为它更简洁。【参考方案2】:从官方文档来看,如下图,推荐使用matplotlib.pyplot
。 这不是意见。
Matplotlib, pyplot and pylab: how are they related? 的文档也描述了 pyplot 和 pylab 之间的区别,其中指出:“虽然很多示例使用 pylab,但不再推荐。”。
2021-05-06 编辑:
来自The pylab API (disapproved)由于大量导入全局命名空间可能会导致意外行为,因此强烈建议不要使用 pylab。请改用matplotlib.pyplot。
【讨论】:
以上是关于推荐的绘图方法是:matplotlib 还是 pylab?的主要内容,如果未能解决你的问题,请参考以下文章
Py之matplotlib:matplotlib库图表绘制中常规设置大全(交互模式清除原有图像设置横坐标显示文字/旋转角度添加图例绘图布局自动调整图像显示图像暂停)