複数グラフの作成方法 subplot gridspec Matplotlib入門講座 08_01

Python
この記事は約5分で読めます。

Pythonを使った複数グラフの作成方法【subplot , subplots】

今回の講義では
matplotlibの中の

subplot

可視化する領域を好きなように分割し、複数のグラフを縦や横に並べて表示させることができる。

gridspec

グラフの表示比率を変更する

を中心に学習します。

まずはライブラリをインポート。
今回の講義ではnumpyを使ってデータを作成するみたいです。
sin と cos のグラフを作成してプロットします。

import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np

x = np.linspace(-np.pi, np.pi, 201)

y_sin = np.sin(x)
y_cos = np.cos(x)

plt.plot(x,y_sin)
plt.plot(x,y_cos)

2つのグラフをsubplotで表示

sinとcosのグラフを時に表示させます
ここで、matplotlibsubplotメソッドを使います。
plt.plotの記述の前の行で、subplot()を書きます。
3つの数字は左から行数、列数、グラフを配置させる位置を示します。
2つのグラフを横に並べて表示させたい場合は、
1行2列なので前2つの数字は1、2です。

今回は、左から数えて1つ目にsinのグラフ、2つ目にcosのグラフを
表示させるので、sinは121、cosは122です。

x = np.linspace(-np.pi, np.pi, 201)

y_sin = np.sin(x)
y_cos = np.cos(x)

plt.subplot(121)
plt.plot(x, y_sin)

plt.subplot(122)
plt.plot(x, y_cos)

plt.show()


これで表示はできましたが、縦軸の目盛りが隣のグラフと重なっています。

matplotlib.pyplot.subplots_adjust()グラフ同士の余白を調整

グラフ同士の余白を調整したい場合は、matplotlibのsubplots adjustメソッドを使います。
ここでは引数の値を0.5とします。

x = np.linspace(-np.pi, np.pi, 201)

y_sin = np.sin(x)
y_cos = np.cos(x)

plt.subplot(121)
plt.plot(x, y_sin)

plt.subplot(122)
plt.plot(x, y_cos)
#グラフ同士の余白を調整
plt.subplots_adjust(wspace=0.5)
plt.show()

matploylib.pyplot.figure()全体のグラフサイズ変更

matplotlibのfigureをつかってグラフの表示域を設定します。
さらにタイトルも付けます。

x = np.linspace(-np.pi, np.pi, 201)

y_sin = np.sin(x)
y_cos = np.cos(x)

plt.figure(figsize=(9,3))

plt.subplot(121)
plt.plot(x, y_sin)
plt.title('sin(x)')

plt.subplot(122)
plt.plot(x, y_cos)
plt.title('cos(x)')

plt.show()

matplotlib.pyplot.suptitle()全体のグラフタイトル追加

グラフ全体に対して1つのタイトルを表示させたい場合は
matplotlibのsuptitleメソッドを使用します。
suptitle()、全体のタイトルにしたい名前を記述し
シングルコーテーションでくくります。

今回はフォントサイズを少し大きめの18とします。

タイトルとグラフが近くなるので余白を開ける
plt.subplots_adjust()を使用します。
今回は上に予約が欲しいのでtop=0.8を引数にあたえます。

x = np.linspace(-np.pi, np.pi, 201)

y_sin = np.sin(x)
y_cos = np.cos(x)

plt.figure(figsize=(9,3))

plt.subplot(121)
plt.plot(x, y_sin)
plt.title('sin(x)')

plt.subplot(122)
plt.plot(x, y_cos)
plt.title('cos(x)')

plt.suptitle('Graphs',fontsize=18)
plt.subplots_adjust(top=0.8)
plt.show()

今回もkinocodeさんの動画で勉強させていただきました。
ありがとうございました!

コメント

タイトルとURLをコピーしました