Matplotlib でひとつの図に複数のグラフを描く方法

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

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

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

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, axs = plt.subplots(2)
fig.suptitle('Hello!')
plt.subplots_adjust(hspace=.5)

# First chart
axs[0].plot(x, y1)
axs[0].set(xlabel='x (1)', ylabel='y1', title='chart 1')
axs[0].grid()

# Second chart
axs[1].plot(x, y2)
axs[1].set(xlabel='x (2)', ylabel='y2', title='chart 2')
axs[1].grid()

plt.show()

1行目で matplotlib.pyplotplt という名前で取り込みます。

3行目から5行目は、グラフの x 座標と y 座標をでたらめに作ってます。座標は配列で表しています。二つのグラフの x 座標は共通として、ひとつ目のグラフの y 座標を配列 y1で、 二つ目のグラフの y 座標を配列 y2 とします。

7行目で plt.subplots(2) 関数を呼び出しています。引数の 2 は、グラフを上下2行に二つ作成することを指定しています。

もし、二つのグラフを横に並べたいなら、12列でグラフを作るため、plt.subplots(1, 2) とします。

plt.subplots() の戻り値は、ひとつめは Figureオブジェクトの fig。これは図全体を表しています。 二つ目の戻り値は Axesオブジェクトです。ここでは二つのグラフ (プロット) を作成したので、Axesオブジェクトの配列が返ります。Axesオブジェクトは図の中のプロットひとつひとつを表しています。

8行目では、suptitle()で図のタイトルを設定しています。

9行目は、上下のプロットの間隔を設定しています。hspaceというパラメータは、プロット間の縦の間隔を、プロットの平均高さに対する割合で指定します。

12行目からひとつ目のグラフの設定をしています。これは、「Matplotlib で基本的なグラフを描く方法」でみたのと同様です。 ただし、ここでは、7行目で二つの Axesオブジェクトを、配列の形で取得しているために、ひとつめの Axesオブジェクトにアクセスするためにインデックス 0 を指定して、axs[0]としています。

同様に17行目からは、二つ目のグラフの設定をするために、二つ目のAxesオブジェクトであるaxs[1]に対して、グラフの設定を行なっています。

最後に21行目では plt.show()を呼び出すことで、グラフのウィンドウを表示しています。

以上、ここでは matplotlib で、ひとつの図の中に複数のグラフを表示する、基本的な方法について説明しました。

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

© 2024 Python 入門