single
サブプロット
メニューを表示するにはスワイプしてください
subplots() の pyplot 関数は、1つの図内に複数のプロットを作成するために使用。キャンバス作成時にも登場したが、ここではさらに詳細を解説。
行と列
主な引数は nrows と ncolumns で、サブプロットのグリッドを定義。デフォルトでは両方とも 1 となり、単一の Axes が生成される。
subplots() は、レイアウトに応じて Figure と1つの Axes オブジェクト、またはそれらの配列を返す。
12345import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
2×2のサブプロットグリッドが作成された。
複数のサブプロットがある場合、subplotsはAxesオブジェクトの配列を返し、通常はaxsという変数に格納される(1つのプロットの場合は単数形のax)。
この場合、axsは2次元配列となるため、特定のサブプロットにアクセスするには行と列のインデックスが必要。
1234567891011121314import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear**2 fig, axs = plt.subplots(2, 2) axs[0, 0].plot(data_linear) axs[0, 1].plot(data_squared) axs[1, 0].scatter(data_linear, data_linear) axs[1, 1].scatter(data_linear, data_squared) plt.show()
最初の行には2つの折れ線グラフがあり、2行目には2つの散布図が含まれています。
各グラフは、対応するAxesオブジェクトのメソッドを使用して描画する必要があり、plt.plot()やplt.scatter()は使用しません。
1次元配列への変換
2次元のAxes配列は、.ravel()を使ってフラット化し、インデックス指定を簡単にできます。
123456789fig, axs = plt.subplots(2, 2) axs = axs.ravel() axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
2x2 配列では、axs.ravel() によって4要素の1次元配列に変換される。
軸の共有
subplots() 関数には sharex および sharey パラメータもある。これらはサブプロット間で x 軸または y 軸を共有するかどうかを制御する。どちらもデフォルトでは False に設定されている。
123456789fig, axs = plt.subplots(2, 2, sharex=True) axs = axs.ravel() axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
sharex=True を設定すると、すべてのサブプロットで x 軸が共有されます。
軸を行または列ごとにのみ共有したい場合は、'row' または 'col' を指定することも可能です。
いつも通り、さらに詳しく知りたい場合は、
subplots() documentation をご参照ください。
スワイプしてコーディングを開始
- 正しい関数を使用してサブプロットのグリッドを作成。
- グリッドは3行1列とし、最初の2つのパラメータで指定。
- x軸をすべてのサブプロットで共有するために、最も右側のキーワード引数を指定。
- サブプロット作成関数の結果を
figおよびaxs変数に格納(左から右へ)。 - 1行目(行
data_linear)に0の折れ線グラフを配置。 - 2行目(行
data_squared)に1の折れ線グラフを配置。 - 3行目(行
data_exp)に2の折れ線グラフを配置。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください