Matplotlibでサブプロットの高さを絶対値(相対値ではなく)で調整する方法
Matplotlibでは、Axes()クラスを使うことで、サブプロットの位置や高さを図に対する相対的な比率ではなく、図内の座標による絶対的な値で指定できます。ここでは、その具体的な手順を解説します。
サブプロットの高さを絶対値で調整する手順
- 図(figure)のサイズを設定し、サブプロット間および周囲のパディングを自動調整します。
- 新しい図を作成するか、既存の図をアクティブにします。
- サブプロットの絶対的な高さを指定するために、Axes()クラスを使用します。
add_axes()メソッドで、作成した軸(axes)を図に追加します。- 軸上にデータポイントをプロットします。
- show()メソッドを使って図を表示します。
コード例
from matplotlib import pyplot as pl # 図のサイズとレイアウトの自動調整を設定 pl.rcParams["figure.figsize"] = [7.50, 4.50] pl.rcParams["figure.autolayout"] = True # 新しい図を作成 figure = pl.figure() # Axes()クラスで絶対座標を指定して軸を作成 # 引数は [左端のx, 下端のy, 幅, 高さ] を図全体に対する比率で指定 axes = pl.Axes(figure, [.4, .6, .25, .25]) figure.add_axes(axes) pl.plot([1, 2, 3, 4], [1, 2, 3, 4]) # 2つ目のサブプロットも同様に絶対座標で配置 axes = pl.Axes(figure, [.4, .1, .25, .25]) figure.add_axes(axes) pl.plot([1, 2, 3, 4], [1, 2, 3, 4]) # 図を表示 pl.show()
出力結果

ポイント解説
pl.Axes(figure, rect)の第2引数rectは、[左端のx座標, 下端のy座標, 幅, 高さ]という形式のリストです。これらの値は0〜1の範囲で、図全体のサイズに対する割合として解釈されます。このように明示的に座標を指定することで、plt.subplots()などによるグリッドベースの相対的なレイアウトとは異なり、各サブプロットを図内の任意の絶対的な位置に自由に配置できます。
-
Matplotlibで軸を共有する際に目盛りラベルを表示する方法
Matplotlibで複数のサブプロット間で軸を共有する場合でも、目盛りラベルを表示させたいことがあります。そのようなときは、subplot()メソッドにsharey引数を指定するだけで簡単に実現できます。デフォルトの設定では、y軸の目盛りラベルは表示されたままになります。手順figureのサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。subplot()メソッドを使って現在のfigureにサブプロットを追加します。軸ax1にはnrows=1、ncols=2、index=1を指定します。1つ目の軸(ax1)上に折れ線グラフをプロットします。再びsubplot()メソッ
-
Matplotlibで軸(Axes)作成後にサブプロットのサイズ・位置を変更する方法
Matplotlibでは、軸(Axes)を作成した後でも、GridSpecクラスを活用することでサブプロットのサイズや位置を柔軟に変更できます。以下の手順に沿って実装方法を見ていきましょう。 figure()メソッドを使って、新しい図を作成するか、既存の図をアクティブにします。 add_subplot()メソッドを使って、図にサブプロット配置の一部として「~.axes.Axes」を追加します。 GridSpec()クラスを使って、図内にサブプロットを配置するためのグリッドレイアウトを定義します。 グリッドスペックの位置を取得し、set_position()で対象の軸に適用します。 set_s