Matplotlib/Seabornでサブプロット間の余白(スペース)を調整する方法
マルチプロットレイアウトにおいて、MatplotlibやSeabornのサブプロット同士の間隔(スペース)が狭すぎたり広すぎたりすると、グラフ全体の見栄えが損なわれてしまいます。本記事では、subplots_adjust()メソッドを使って、サブプロット間の縦・横の余白を自由に調整する手順を解説します。
調整の手順
- 図のサイズとパディングを設定する:
plt.rcParamsでfigureサイズを指定し、figure.autolayoutを有効にして自動レイアウト調整を行います。 - 図とサブプロットを作成する:
plt.subplots()を使って、複数のサブプロットを持つfigureを生成します。 - サブプロットのレイアウトパラメータを調整する:
fig.subplots_adjust()で、行間(hspace)と列間(wspace)の間隔を指定します。 - 各サブプロットにSeabornの箱ひげ図を作成する:
sns.boxplot()のax引数に各axesオブジェクトを渡します。 - 図を表示する:
plt.show()メソッドで描画結果を確認します。
コード例
import seaborn as sns from matplotlib import pyplot as plt # 図のサイズと自動レイアウトを設定 plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True # 2x2のサブプロットを作成 fig, axes = plt.subplots(2, 2) # サブプロットのレイアウトパラメータを調整 # hspace: 行間のスペース / wspace: 列間のスペース fig.subplots_adjust(hspace=0.125, wspace=0.125) # 各サブプロットにSeabornの箱ひげ図を作成 sns.boxplot(ax=axes[0, 0]) sns.boxplot(ax=axes[0, 1]) sns.boxplot(ax=axes[1, 0]) sns.boxplot(ax=axes[1, 1]) # 図を表示 plt.show()
実行結果
上記のコードを実行すると、以下のような出力が得られます。2×2のグリッド上に4つの箱ひげ図が配置され、hspaceとwspaceの値によってサブプロット間の余白が適切に調整されていることがわかります。

ポイント解説
subplots_adjust()の主なパラメータは以下の通りです。
- hspace: サブプロット間の高さ方向(行間)のスペース。値を大きくすると縦の間隔が広がります。
- wspace: サブプロット間の幅方向(列間)のスペース。値を大きくすると横の間隔が広がります。
- top / bottom / left / right: 図全体に対するサブプロット領域の位置も個別に調整可能です。
また、plt.tight_layout()を使用すれば、ラベルやタイトルが重ならないように自動的に最適な間隔を計算することもできます。細かい制御が必要な場合はsubplots_adjust()、手軽に整えたい場合はtight_layout()という使い分けがおすすめです。
-
MatplotlibでJupyterノートブックのmatshow()のfigsize(図のサイズ)を変更する方法
Matplotlibのmatshow()メソッドで表示される図のサイズ(figsize)を変更したい場合、figure()メソッドの引数にfigsizeを指定し、matshow()メソッドにはfignumを指定することで実現できます。手順figure()メソッドを使って、新しい図を作成するか、既存の図をアクティブにします。このとき、figsize引数で図のサイズを指定できます。Pandasを使ってデータフレームを作成します。matshow()メソッドを使って、配列を行列として新しい図ウィンドウに表示します。引数fignumには、None、整数、または0を指定できます。Noneの場合:自動的に番
-
Matplotlibで凡例のマーカーとラベルの間隔を調整する方法
Matplotlibで凡例(legend)のマーカーとラベルの間隔を調整したい場合は、legend()メソッドのlabelspacing引数を使用します。この引数に数値を指定することで、凡例内の各行(マーカーとラベル)同士の縦方向のスペースを自由に広げたり狭めたりできます。手順Label 1、Label 2、Label 3というラベルを付けて、3本の線をプロットします。凡例のマーカーとラベルの間隔を調整するための変数spaceを定義します。legend()メソッドの引数にlabelspacing=spaceを指定して呼び出します。図を表示するには、plt.show()メソッドを使用します。サン