Matplotlib で異なるサブプロットサイズを作成する方法
胡金庫
2023年1月30日
Matplotlib
Matplotlib Subplot
gridspec_kw、gridspec および subplot2grid を使用して、サブプロットの異なる比率を指定し、異なるサイズのサブプロットを作成できます。

gridspec メソッド
import matplotlib.pyplot as plt
from matplotlib import gridspec
fig = plt.figure()
spec = gridspec.GridSpec(ncols=2, nrows=1, width_ratios=[2, 1])
ax0 = fig.add_subplot(spec[0])
ax0.plot(range(5), range(5, 10))
ax1 = fig.add_subplot(spec[1])
ax1.plot(range(5), range(5, 10))
plt.show()
gridspec モジュールの GridSpec はサブプロットグリッドのジオメトリを指定します。行数、列数、幅や高さの比率などのレイアウトパラメータを設定できます。
spec = gridspec.GridSpec(ncols=2, nrows=1, width_ratios=[2, 1])
図は 2つの列と 1つの行を持ち、幅の比率は 2:1 であることを指定します。
ax0 = fig.add_subplot(spec[0])
上記で定義されているように、ax0 オブジェクトはジオメトリ内の位置 0 の代わりをします。または、spec[0, 0] を使用してより明確にすることができます。
gridspec_kw メソッド
import matplotlib.pyplot as plt
fig, ax = plt.subplots(
2, 2, gridspec_kw={"width_ratios": [2, 1], "height_ratios": [1, 2]}
)
ax[0][0].plot(range(5), range(5, 10))
ax[0][1].plot(range(5), range(10, 5, -1))
ax[1][0].plot(range(5), range(5, 10))
ax[1][1].plot(range(5), range(10, 5, -1))
plt.show()

gridspec_kw は、サブプロットのグリッドを指定するための GridSpec コンストラクターのキーワードを含む辞書です。
幅の比率は 2:1 として指定され、高さの比率は 1:2 に設定されます。
subplot2grid メソッド
subplot2grid により、サブプロットは 0 ベースのグリッドインデックスで複数のセルを取得できます。
def subplot2grid(shape,
loc,
rowspan=1,
colspan=1,
fig=None,
**kwargs):
shape はグリッドの形状であり、最初の要素が行数で 2 番目が列数である 2つの整数のシーケンスがあります。
loc はグリッドに axis を配置する場所です。また、最初のエントリが行番号で 2 番目の要素が列番号である 2つの整数のシーケンスです。
rowspan と colspan は、軸が右(rowspan の場合)または下(colspan の場合)にまたがる行または列の数です。
コーディング例:
import matplotlib.pyplot as plt
fig = plt.figure()
ax0 = plt.subplot2grid((1, 5), (0, 0), colspan=3)
ax1 = plt.subplot2grid((1, 5), (0, 3), colspan=2)
ax0.plot(range(5), range(5, 10))
ax1.plot(range(5), range(10, 5, -1))
plt.show()

ax0 = plt.subplot2grid((1, 5), (0, 0), colspan=3)
ax1 = plt.subplot2grid((1, 5), (0, 3), colspan=2)
グリッドは 1 行 5 列の (1, 5) の形をしています。
ax0 は (0, 0) セルに配置されて 3 列をとり、ax1 は (0, 3) に配置されて他の 2 列をとります。
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: 胡金庫
