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のグラフを時に表示させます。
ここで、matplotlibのsubplotメソッドを使います。
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さんの動画で勉強させていただきました。
ありがとうございました!
コメント