是否有文档将matplotlib的有状态pyplot API映射到面向对象的等价物?

时间:2017-07-20 08:12:53

标签: python matplotlib

我更喜欢使用Matplotlib的面向对象的API,直接在数字和轴上操作,而不是使用matplotlib.pyplot命令。

但是我经常发现通过pyplot界面找到有关如何做某事的文档更容易。在这些情况下,根据图和轴方法找出相关的pyplot命令正在做什么非常有用,因为它可以帮助我处理我在寻找文档时遇到的任何特定的角落情况。

例如,如果plt.xlabel()是pyplot的有状态接口中的“当前”轴,则ax.set_xlabel()等效于ax。但我在xlabel()文档中找不到任何提及Axes.set_xlabel()的内容。在这种情况下,在Axes文档中单独查找并不难,但映射会非常好。

是否有任何信息来源可以告诉我每个特定的pyplot命令在面向对象的界面方面做了什么?

2 个答案:

答案 0 :(得分:5)

使用来源,卢克!许多pyplot commans只是围绕AxesFigure方法的非常薄的包装器。我通常使用IPython。

In [1]: import matplotlib.pyplot as plt

In [2]: plt.xlabel??
Signature: plt.xlabel(s, *args, **kwargs)
Source:
def xlabel(s, *args, **kwargs):
    """
    Set the *x* axis label of the current axis.

    Default override is::

      override = {
          'fontsize'            : 'small',
          'verticalalignment'   : 'top',
          'horizontalalignment' : 'center'
          }

    .. seealso::

        :func:`~matplotlib.pyplot.text`
            For information on how override and the optional args work
    """
    return gca().set_xlabel(s, *args, **kwargs)
File:      ~\appdata\local\programs\python\python36-32\lib\site-packages\matplotlib\pyplot.py

答案 1 :(得分:4)

我想说在潜在的OO API命令方面有四类pyplot命令。

  1. 直接等价物:所有绘图函数只在matplotlib.axes.Axes类中具有等价物,例如plt.plot> ax.plot。所有辅助函数在matplotlib.figure.Figure类中具有等价物,例如plt.colorbar> fig.colorbarplt.subplots_adjust> fig.subplots_adjust

  2. 绘图属性在轴类中有一个getter和setter,例如plt.title> ax.set_title

  3. 某些pyplot命令没有任何等效,例如: plt.subplotsplt.show

  4. 某些命令仅在pyplot命名空间中可用,并且需要从相应的子模块导入以进行OO接口,例如: plt.Normalize> import matplotlib.colors; matplotlib.colors.Normalize

  5. 通常搜索功能或命令会带来两种变化。也可以明确地查看figureaxes文档以查找命令。最后,source of matplotlib可用,可以查看为给定的pyplot命令调用API函数的pyplot code