Matplotlib で異なるサブプロットサイズを作成する方法
胡金庫
2023年1月30日
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 列をとります。
著者: 胡金庫