2017-07-20 1 views
2

matplotlib.pyplotコマンドを使用するのではなく、図と軸で直接操作するMatplotlibのオブジェクト指向APIを使用することをお勧めします。matplotlibのステートフルなpyplot APIをオブジェクト指向の同等のものにマッピングする文書はありますか?

しかし、多くの場合、pyplotインターフェイスで何かを行う方法に関するドキュメントを見つけるのが簡単です。これらのケースでは、関連するpyplotコマンドがFigureとAxesメソッドの面で何をしているのかを知ることは本当に便利です。ドキュメンテーションを探すときに取り組んでいた特定のコーナーケースを処理するのに役立ちます。

たとえば、plt.xlabel()は、ax.set_xlabel()に相当し、axがpyplotのステートフルインターフェイスの「現在の」軸の場合に相当します。しかし、Axes.set_xlabel()が記載されているxlabel()のマニュアルには何も見つかりません。この場合、Axesのドキュメンテーションで別々に調べるのは難しいことではありませんが、マッピングは本当に素晴らしいでしょう。

各特定のpyplotコマンドがオブジェクト指向インターフェイスに関して行うことを教えてくれる情報源はありますか?

答えて

4

ルークを使用してください!多くのpyplotコマンドは、AxesまたはFigureメソッドのまわりの非常に薄いラッパーです。私は通常、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 
+0

素晴らしいアイデア!とにかく私は通常ジュピターにいる。 – user2428107

3

潜在的なOO APIコマンドに関して、pyplotコマンドの4つのクラスがあります。

  1. 直接同等物:すべてのプロット関数は、単にmatplotlib.axes.Axesクラスで彼らの同等を持って、例えばplt.plot>ax.plot。すべての補助関数は、matplotlib.figure.Figureクラスに相当する。 plt.colorbar>fig.colorbarplt.subplots_adjust>fig.subplots_adjust

  2. プロットの属性は、例えば、軸のクラスのゲッターとセッターを持っていますplt.title>ax.set_title

  3. いくつかのpyplotコマンドは、等価ではありません。 plt.subplotsまたはplt.show

  4. いくつかのコマンドはpyplot名前空間でのみ使用でき、OOインターフェイスのためのそれぞれのサブモジュールからインポートする必要があります。 plt.Normalize>import matplotlib.colors; matplotlib.colors.Normalize

通常、機能またはコマンドを検索すると、両方のバリエーションが表示されます。明示的に、figureまたはaxesのマニュアルを調べて、コマンドを見つけることもできます。最後に、source of matplotlibが利用可能であり、特定のpyplotコマンドに対してAPI関数が呼び出されるpyplot codeを調べることができます。

+0

これは素晴らしい回答です。ありがとうございます。 – user2428107

関連する問題