建议的绘图方式是:matplotlib还是pylab?

Ash*_*ppa 83 python matplotlib

我看到我可以用Python 绘图:

import matplotlib
matplotlib.pyplot.plot(...)
Run Code Online (Sandbox Code Playgroud)

要么:

import pylab
pylab.plot(...)
Run Code Online (Sandbox Code Playgroud)

这两个都使用相同的matplotlib绘图代码.

那么,Python社区推荐哪一种作为更好的绘图方法呢?为什么?

tac*_*ell 99

官方文档: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(....)
Run Code Online (Sandbox Code Playgroud)

这不会污染名称空间.我更喜欢这个,所以我可以跟踪来自哪里.

如果你使用

ipython --pylab
Run Code Online (Sandbox Code Playgroud)

这相当于跑步

from pylab import * 
Run Code Online (Sandbox Code Playgroud)

现在建议ipython您使用新版本

ipython --matplotlib
Run Code Online (Sandbox Code Playgroud)

这将设置所有适当的背景细节,使交互式后端工作得很好,但不会批量导入任何东西.您需要显式导入所需的模块.

import numpy as np
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

是一个好的开始.

如果你正在嵌入matplotlib一个gui,你不想导入pyplot,因为这将启动额外的gui主循环,而你应该导入的确切取决于你正在做什么.

  • pylab和pyplot之间的区别在于前者将numpy导入其命名空间.这是为了使它与matlab的行为更相似.现在首选使用pyplot而不是pylab,因为它更干净. (17认同)

Apo*_*los 7

https://matplotlib.org/faq/usage_faq.html#matplotlib-pyplot-and-pylab-how-are-they-related的文档还描述了pyglot和pylab之间的区别,并指出:“尽管使用了许多示例pylab,不再推荐。” 。因此,我看不出有任何理由使用pylab或担心它。