pylab和pyplot有什么区别?

209

matplotlib.pyplot和matplotlib.pylab有什么区别?

在何种情况下使用哪个更好?

我有点困惑,因为似乎无论我导入哪个,都可以做同样的事情。我错过了什么吗?


这个问题被标记为重复,因为另一个答案不建议使用 pylab,根据官方文档。请参见此答案 - Trenton McKinney
1个回答

173
这个措辞已不再文档中。
现在不推荐使用pylab导入,建议大多数非交互式用法使用OO接口。

根据documentation,我强调:

Matplotlib是一个完整的包,pylab是matplotlib中的一个模块,与matplotlib一起安装;而matplotlib.pyplot则是matplotlib中的另一个模块。 Pyplot为底层绘图库提供了状态机接口。这意味着会隐式和自动地创建图形和坐标轴以实现所需的绘图。例如,从pyplot调用plot将自动创建必要的图形和坐标轴以实现所需的绘图。然后,设置标题将自动将该标题设置为当前坐标轴对象: Pylab将pyplot功能(用于绘图)与numpy功能(用于数学和数组处理)结合在一个命名空间中,使该命名空间(或环境)更加类似于MATLAB。例如,可以像在MATLAB中一样调用sin和cos函数,并拥有pyplot的所有功能。 通常推荐使用pyplot接口进行非交互式绘图(即脚本化)。对于交互式计算和绘图,pylab接口非常方便,因为它减少了输入量。请注意,如果使用带有-pylab选项的ipython shell,则会得到这个结果,它会从pylab导入所有内容,并使绘图变得完全交互式。

4
根据matplotlib FAQ的说法,他们不赞成使用pylab模块: "pylab是一个方便的模块,它在一个命名空间中同时导入了matplotlib.pyplot(用于绘图)和numpy(用于数学和数组操作)。虽然许多示例使用pylab,但不再建议这样做。" - M.T
11
面向对象接口的思想是不使用 plt.figure()plt.plot(x,y) 等函数,而是创建一个 Figure 对象,向其中添加 Axes 对象,再向 Axes 对象添加绘图。这种接口是面向对象的,因为你(作为开发人员)需要引用 Figure 或 Axes 对象,而不是引用 plt.* 并让 pyplot 猜测你正在引用哪个图形。 - zeehio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接