Matplotlib基本事項メモ
ここでは、数値計算結果をグラフなどの可視化の際に便利なMatplotlibライブラリの基本的事項を記しておく。
Matplotlib
Matplotlibはグラフ描画用のライブラリである。数値計算の結果を簡易的に確認するだけではなく、論文やプレゼンにも使える見栄えのよいグラフ作成までできる。
Matplotlibを使用するには、次のようにpyplotをインポートする。
import matplotlib.pyplot as plt
2つのインターフェース
Matplotlibには以下2つのインターフェース(呼び出し方)が存在する。
- オブジェクト指向インターフェース(object-orinted interface)
- pyplotインターフェース(state-based interface)
以下に2つのインターフェースでのMatplotlibよりグラフを描画するコード例を示す。
import numpy as np x = np.linspace(-2, 2, 101) # -2から2までを100等分した配列を生成 y = np.tanh(x) # 各x点におけるtanh(x)を計算
オブジェクト指向インターフェースを使ってグラフを描くコードは以下となる。
fig, ax = plt.subplots() # まずFigureオブジェクトとAxesオブジェクトを生成 ax.plot(x, y) # axesオブジェクトにプロット ax.set_xlabel('x labael') # x軸にラベルをつける ax.set_ylabel('y labael') # y軸にラベルをつける fig.show() # グラフを表示
/var/folders/yt/sj88vtyd5d1d_gdrrqdq469h0000gn/T/ipykernel_29949/1623430655.py:5: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.
fig.show() # グラフを表示
[f:id:AKH1116:20240131011919p:plain]
次に、同じ図をpyplotインターフェースで描くコードを以下に示す。
plt.plot(x, y) plt.xlabel('x labael') plt.ylabel('y labael') plt.show()
上記のオブジェクト指向インターフェースとpyplotインターフェースを比べると、pyplotインターフェースの方がシンプルに書けるが、オブジェクト指向インターフェースの方がより手の込んだグラフを作成できるので、こちらで書くことを推奨する。 たとえば、オブジェクト指向インターフェースを利用すると、1つの図の中に複数のグラフを描くことができる。
1つの図に複数のグラフを描く方法
1つのFigureの中に複数のAxesオブジェクトを作り、各Axesオブジェクトに対してグラフを描けば良い。
複数のAxesオブジェクトを生成するには、plt.subplots()の引数に、縦と横に並べるグラフの数を与える。
x = np.linspace(0, 1, 51) * np.pi * 2 y1 = np.sin(x) y2 = np.cos(x) y3 = x y4 = x*x fig, ax = plt.subplots(2, 2) ax[0,0].plot(x, y1) ax[0,1].plot(x, y2) ax[1,0].plot(x, y3) ax[1,1].plot(x, y4) plt.show()