Matplotlib で異なるサブプロットサイズを作成する方法

胡金庫 2023年1月30日
  1. gridspec メソッド
  2. gridspec_kw メソッド
  3. subplot2grid メソッド
Matplotlib で異なるサブプロットサイズを作成する方法

gridspec_kwgridspec および subplot2grid を使用して、サブプロットの異なる比率を指定し、異なるサイズのサブプロットを作成できます。

Matplotlib の異なるサブプロットサイズ

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()

Matplotlib 異なるサブプロットサイズ_gridspec_kw

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つの整数のシーケンスです。

rowspancolspan は、軸が右(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()

Matplotlib 異なるサブプロットサイズ_subplot2grid

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 列をとります。

著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - Matplotlib Subplot