OOPスタイルでmatplotlib
を使用することを強くお勧めします。
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)
これにより、複数の図とサブプロットを追跡しやすくなります。
質問:この方法でシーボーンを使用するには?または、 この例 をOOPスタイルに変更する方法は? seaborn
などのlmplot
プロット関数にどのFigure
またはAxes
をプロットするかを伝える方法
使用しているシーボーン機能に少し依存します。
Seabornのプロット関数は、大きく2つのクラスに分けられます。
regplot
、boxplot
、kdeplot
などの「軸レベル」関数lmplot
、factorplot
、jointplot
、および他の1つまたは2つを含む「図レベル」関数最初のグループは、明示的なax
引数を取り、Axes
オブジェクトを返すことで識別されます。これが示唆するように、それらにAxes
を渡すことで、「オブジェクト指向」スタイルでそれらを使用できます。
f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)
軸レベルの関数はAxes
にのみ描画し、それ以外の場合はFigureを台無しにしないため、オブジェクト指向のmatplotlibスクリプトで完全に共存できます。
関数の2番目のグループ(図レベル)は、結果のプロットに、常に「意味のある」方法で編成されたいくつかの軸が含まれる可能性があるという事実によって区別されます。つまり、関数はFigureを完全に制御する必要があるため、たとえばlmplot
を既に存在するものにプロットすることはできません。この関数を呼び出すと、常にFigureが初期化され、描画している特定のプロット用にセットアップされます。
ただし、lmplot
を呼び出すと、タイプ FacetGrid
のオブジェクトが返されます。このオブジェクトには、プロットの構造について少し知っている結果のプロットを操作するためのメソッドがいくつかあります。また、FacetGrid.fig
およびFacetGrid.axes
引数で基になる図と軸の配列を公開します。 jointplot
関数は非常に似ていますが、 JointGrid
オブジェクトを使用します。したがって、これらの関数はオブジェクト指向のコンテキストで使用できますが、カスタマイズはすべて、関数を呼び出した後に行う必要があります。