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

  1. gridspec メソッド
  2. gridspec_kw メソッド
  3. subplot2grid メソッド

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.png

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

関連記事 - Matplotlib Subplot

  • Matplotlib の多くのサブプロットでサブプロットのサイズまたは間隔を改善する方法
  • comments powered by Disqus