[matplotlib] 10. Matplotlibで複数のグラフを表示する方法(subplot、add_subplot、subplots、GridSpec)

matplotlib

はじめに

この記事では、Matplotlibを使って1つのウィンドウに複数のグラフを効率的に配置・表示するための様々な方法について解説します。

モジュールのインポート

ひとつのグラフを表示

subplotによる方法

plt.subplot(111)

plt.figure()を使用してfigureオブジェクトを作成し、ax = plt.subplot(111)とすることでグラフを描画できます。

plt.subplot(1,1,1)

plt.subplot(1,1,1)としても同様のグラフが生成されます。

figureのサイズ変更

figsize=(4,6)を指定すると、横4インチ、縦6インチのグラフを作成できます。figsizeのデフォルト値は(6,4)です。

複数のグラフを表示

plt.subplot()による方法

subplot(211)とsubplot(212)を使うと縦に並んだグラフを、subplot(121)とsubplot(122)を使うと横に並んだグラフを作成できます。

211は「2行1列の1番目(上段)」を意味し、212は「2行1列の2番目(下段)」を意味します。

同様に、121は「1行2列の1番目(左側)」を意味し、122は「1行2列の2番目(右側)」を意味します。

add_subplot()による方法

fig.add_subplot()メソッドを使用することでも、plt.subplot()と同様に複数のグラフを作成することができます。

plt.subplots()による方法

plt.subplots(nrows=2, ncols=2)のように行数(nrows)と列数(ncols)を設定することで、複数の整列したグラフを一度に作成できます。

ax.ravel()を使うとaxを一次元配列に展開でき、整数インデックスでaxを選択できるようになります。このとき、グラフは左上から右下の順に番号付けされます。

sharex, shareyによる目盛りラベルの簡素化

sharex、shareyパラメータをTrueに設定すると、すべてのグラフで軸の範囲が統一され、目盛りラベルは外側のみに表示されます。

GridSpec()について

GridSpec()を使用すると、表示領域をグリッド状に分割でき、ax4 = fig.add_subplot(grid[1:, 1:])のように特定の範囲を指定することで、より柔軟性の高い複数グラフのレイアウトを作成できます。

参考

matplotlib.pyplot.subplots — Matplotlib 3.10.5 documentation
matplotlib.pyplot.subplot — Matplotlib 3.10.5 documentation
matplotlib.pyplot.figure — Matplotlib 3.10.5 documentation
コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

コメント