Matplotlib で複数のグラフを同時に描く方法

ここでは、下図のように、同時に複数のグラフを描く基本的な方法を説明します。

グラフを描画するために matplotlib を使います。基本的な使い方については「Matplotlib で基本的なグラフを描く方法」をみてください。

Matplotlib で同時に複数のプロットを描画する方法

Axes オブジェクトはひとつの図中の、ひとつひとつのグラフを表します。 同じ Axes オブジェクトに対して、複数回 plot() 関数を呼び出すことで、同時に複数のプロットを描画することができます。

さっそく、上のグラフを表示するコードを示します。

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4,  5]
y1 = [1, 2, 4, 3, 5, 10]
y2 = [3, 2, 5, 10, 4, 8]

fig, ax = plt.subplots()
fig.suptitle('Hello!')

ax.plot(x, y1, label='foo')
ax.plot(x, y2, label='bar')
ax.set(title='Two Plots', xlabel='X', ylabel='Y')
ax.grid()
plt.legend()

plt.show()

1行目では matplotlib.pyplot モジュールを plt という名前で取り込んでいます。

3行目から5行目は、サンプルデータの準備です。単なるデタラメな値です。

7行目では subplots() 関数を呼び出し、Figure オブジェクトと Axes オブジェクトを取得しています。Figureオブジェクトは図全体を、Axesオブジェクトはひとつひとつのグラフ (チャート) を表すのでしたね。

10-11行目では、7行目で受け取った Axes オブジェクトである axplot() 関数を呼び出しています。10行目では y1 を渡していますが、これに対して foo というラベル (名前) を設定しています。同様に 11行目では y2 のプロットに bar というラベルを設定しています。

foobarという文字列は、プログラミングでは「適当なデタラメな値」を表すために使われます。ここでも深い意味はありません。

12行目はグラフのタイトル、x 軸の名前、y 軸の名前を設定しています。

13行目は grid() 関数を呼び出すことで、縦軸と横軸の補助線を描いています。

14行目は legend() 関数を呼び出して、グラフの凡例 (legend) を描いています。ここではグラフの左上に表示されています。

凡例の位置は、既定ではグラフの余白に適当に場所を見つけて表示されます。(凡例の場所を変更する方法については、下に記載しています。)

Matplotlib のグラフの凡例の位置を設定する方法

上で説明した通り、グラフの凡例は legend() 関数を呼び出すことで表示され、既定ではグラフの中で極力プロットと重ならないような場所を探して表示されます。 この動作は legend() 関数の locオブションを 'best' に指定した時の動作になります。

グラフの上段、中段、下段、左側、中央、右側、それぞれのエリアに対して、uppercenterlowerleftcenterright と名前が付けられ、 下段右側であれば lower rightというように指定できます。(ちなみに中央は center とします。center center ではありません。)

plt.legend(loc='lower right')

ちなみに既定の、「プロットと重なりの少ない場所」というのは loc='best' と設定した場合と同じになります。

以上、ここでは Matplotlib でひとつのグラフ内に複数のプロットを描画する方法について説明しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門