推荐的绘图方法是: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.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

是一个好的开始。

如果您将 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?的主要内容,如果未能解决你的问题,请参考以下文章

python3.5 怎么安装matplotlib

Py之matplotlib:matplotlib库图表绘制中常规设置大全(交互模式清除原有图像设置横坐标显示文字/旋转角度添加图例绘图布局自动调整图像显示图像暂停)

Python--matplotlib绘图可视化知识点整理

14,Matplotlib函数式绘图

matplotlib基本绘图参数

Python--matplotlib绘图可视化知识点整理