【问题标题】:Which is the recommended way to plot: matplotlib or pylab?推荐的绘图方法是:matplotlib 还是 pylab?
【发布时间】:2013-05-26 19:32:51
【问题描述】:

我可以在 Python绘图,使用:

import matplotlib
matplotlib.pyplot.plot(...)

或者:

import pylab
pylab.plot(...)

这两个都使用matplotlib

推荐哪种正确的绘图方法?为什么?

【问题讨论】:

    标签: python 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 编辑:

    由于大量导入全局命名空间可能会导致意外行为,因此强烈建议不要使用 pylab。请改用matplotlib.pyplot

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-09
      • 2015-12-19
      • 1970-01-01
      • 2020-07-24
      • 2013-03-10
      • 2010-10-19
      • 1970-01-01
      • 2011-03-11
      相关资源
      最近更新 更多