Matplotlibの使い方
Explicit vs Implicit Interfaces
Explicit interfaceはオブジェクト指向的な使い方(OO-style)で、axes.Axesオブジェクトに対して設定する方法です。
Implicit interfaceはMATLAB的な使い方(pyplot-style)で、pyplotモジュールのグローバルなオブジェクト(?)に対して設定する方法です。
注釈
公式で推奨しているように、MATLABユーザーでないかぎり、OO-styleを使えばよいと思います。
また、意図せずに混合して使うのは避けた方がよいと思います。
Axes and Figure
matplotlibの用語として把握しておくべきなのはAxesとFigureです。
Axesは独立した図オブジェクト単体を指します。
Figureは最終的に保存する描画オブジェクトを指し、複数のAxesオブジェクトを含むことができます。
Figureオブジェクトの構成要素は
Parts of a Figureの図と説明を参照してください。
ヒント
ROOTを使ってるひとは、
FigureオブジェクトはTCanvasオブジェクト相当、
AxesオブジェクトはTCanvas::Divideしたエリア相当、
とイメージするとよいと思います。
1# OO-styleの基本形
2import matplotlib.pyplot as plt
3
4# データオブジェクト(辞書型 or データフレーム)
5# sample_data: dict | pd.DataFrame
6
7fig, ax = plt.subplots()
8ax.scatter(
9 data=sample_data,
10 x="X軸のカラム名",
11 y="Y軸のカラム名",
12 c="マーカーの色のカラム名",
13 marker="マーカーの種類")
14ax.set_title("散布図のタイトル")
15ax_set_xlabel("X軸のタイトル")
16ax_set_ylabel("Y軸のタイトル")
OO-styleの基本的な形として、
matplotlib.pyplot.subplotsで描画オブジェクト(FigureオブジェクトとAxesオブジェクト)を作成し、
matplotlib.axes.Axes.plotを使ってグラフを作成&詳細設定します。
ヒント
pandas.DataFrameなどのデータフレームからグラフを作成する場合に、
X軸とY軸の値をnumpy.arrayなどに変換しているサンプルを見かけますが、
dataオプションでデータフレームを指定し、
X軸とY軸にカラム名を指定すればよいと思います。
ImplicitからExplicitに変換したい
1# Current Figure を取得する
2fig = plt.gcf()
3
4# Current Axesを取得する
5ax = plt.gca()
plt.gcfやplt.gcaでimplicit interfaceで使われているグローバルオブジェクトをexplicit interfaceとして使えるようにできます。