私はmatplotlib
を本当に使い慣れていないので、ソリューションをできるだけ迅速かつ簡単に入手するためのツールとして常に使用してきたことを非常に恥ずかしく思います。だから私は基本的なプロット、サブプロットなどを取得する方法を知っており、時々再利用されるかなりの数のコードを持っています...しかし、matplotlib
の「深い」知識はありません。
最近、これを変更して、いくつかのチュートリアルを自分で行う必要があると思いました。ただし、matplotlibsのplt
、fig(ure)
およびax(arr)
についてはまだ混乱しています。本当に違いは何ですか?
ほとんどの場合、「素早い」プロットでは、_pyplot as plt
_だけを使用し、_plt.plot
_で直接プロットする人がいます。プロットするものは複数あるため、頻繁にf, axarr = plt.subplots()
...しかし、ほとんどの場合、データをaxarr
に入れ、図f
を無視するコードのみが表示されます。
だから、私の質問は:matplotlibを操作するクリーンな方法は何ですか? plt
のみを使用する場合、figure
は何に使用するのですか?サブプロットはデータのみを含む必要がありますか?それとも、サブプロット内のスタイリング、プロットのクリアなどのすべてに有効かつ良い習慣ですか?
これが広範囲に及ばないことを願っています。基本的に私は、plt
<-> fig
<-> ax(arr)
の真の目的(およびそれらを適切に使用する場合と方法)についてのアドバイスを求めています。
チュートリアルも歓迎します。 matplotlibのドキュメントは、私をかなり混乱させています。凡例のスケールを変更したり、プロットマーカーや色を変更したりするなど、本当に具体的なものを検索する場合、公式ドキュメントは非常に正確ですが、一般的な情報はあまりよくありません。多すぎる例、目的の実際の説明はありません...多かれ少なかれ、すべての可能なAPIメソッドと引数の大きなリストのように見えます。
pyplot
は、matplotlibの「スクリプト」レベルAPIです(matplotlibで多くのことを実行するための最高レベルのAPI)。これは、Matlabでできるのと同様の方法で、手続き型インターフェイスを使用してmatplotlibを使用できるようにします。 pyplot
には、すべての関数が(@tacaswell dixit)に委任する「現在の図」と「現在の軸」の概念があります。したがって、モジュールpyplot
で利用可能な関数を使用すると、「現在の図」と「現在の軸」にプロットされます。
どこに何をプロットするかを細かく制御したい場合は、Figure
とAxes
のインスタンスを使用してオブジェクト指向のAPIを使用する必要があります。
pyplot
で使用できる関数には、Axes
にも同等のメソッドがあります。
リポジトリから matplotlibの構造 :
Figure
は、この階層の最上位のコンテナです。それはすべてが描かれている全体的なウィンドウ/ページです。複数の独立した図を作成でき、Figure
sには複数の軸を含めることができます。だが...
ほとんどのプロットはAxes
で行われます。軸は、事実上、データをプロットする領域とそれに関連付けられている目盛り/ラベルなどです。通常、Axes
はsubplot(Axes
を通常のグリッドに配置します)の呼び出しで設定するため、ほとんどの場合、Axes
およびSubplot
は同義です。
各Axes
にはXAxisとYAxisがあります。これらには、目盛り、目盛りの位置、ラベルなどが含まれます。
プロットの構造を知りたい場合は、これにアクセスしてください link 。
this チュートリアルは、FigureやAxesのようなmatplotlibのオブジェクト階層の基本的な概念、および現在のFigureや現在のAxesの概念をよく説明していると思います。
簡単な答えが欲しい場合:複数の軸(軸とは異なります)をラップするコンテナーであるFigureオブジェクトには、この画像に示すように、凡例、線、目盛りなどの小さなオブジェクトも含まれています- matplotlibドキュメント
だから私たちがするとき
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots()
>>> type(fig)
<class 'matplotlib.figure.Figure'>
>>> type(ax)
<class 'matplotlib.axes._subplots.AxesSubplot'>
FigureオブジェクトとそのFigureに含まれるAxesオブジェクトを作成しました。
pyplot
は、MATLABに精通しており、すばやくダーティなプロットを作成したい人にとって、MATLABに似たAPIです。figure
は、MATLABスタイルのプロットを気にしない人のためのオブジェクト指向APIです。したがって、どちらか一方を使用できますが、両方を併用することはできません。