Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibで軸(Axes)作成後にサブプロットのサイズ・位置を変更する方法

Matplotlibでは、軸(Axes)を作成した後でも、GridSpecクラスを活用することでサブプロットのサイズや位置を柔軟に変更できます。以下の手順に沿って実装方法を見ていきましょう。

  • figure()メソッドを使って、新しい図を作成するか、既存の図をアクティブにします。
  • add_subplot()メソッドを使って、図にサブプロット配置の一部として「~.axes.Axes」を追加します。
  • GridSpec()クラスを使って、図内にサブプロットを配置するためのグリッドレイアウトを定義します。
  • グリッドスペックの位置を取得し、set_position()で対象の軸に適用します。
  • set_subplotspec()でsubplotspecインスタンスを設定します。
  • GridSpecインスタンスを指定してadd_subplot()メソッドで新しいAxesを追加します。
  • tight_layout()でサブプロット間および周囲の余白を自動調整します。
  • 図を表示するには、show()メソッドを使用します。

コード例

from matplotlib import pyplot as plt
from matplotlib import gridspec as gridspec
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111)
gs = gridspec.GridSpec(3, 1)
ax.set_position(gs[0:2].get_position(fig))
ax.set_subplotspec(gs[0:2])
fig.add_subplot(gs[2])
fig.tight_layout()
plt.show()

コードの解説

このコードでは、まずGridSpec(3, 1)によって3行1列のグリッドを作成しています。その後、最初に作成した軸(ax)をset_position()set_subplotspec()を使ってグリッドの上段2行分(gs[0:2])へ移動させます。最後に、残りの下段1行分(gs[2])に新しいサブプロットを追加することで、上のサブプロットが大きく、下のサブプロットが小さい非対称なレイアウトを実現しています。

出力結果

Matplotlibで軸(Axes)作成後にサブプロットのサイズ・位置を変更する方法

  1. Matplotlibの図に凡例を配置・整列させる方法

    Matplotlibで作成した図(フィギュア)に凡例を適切な位置に配置し、要素を整列させる方法を解説します。凡例の位置調整には bbox_to_anchor 引数を使用するのがポイントです。 手順 plot() メソッドを使って line1 と line2 の2本の線をプロットします。 legend() メソッドで図に凡例を配置します。このとき bbox_to_anchor を使って凡例の位置を指定し、ncol 引数で凡例要素を横並びに整列させます。 show() メソッドを呼び出して図を表示します。 コード例 from matplotlib import pyplot as plt pl

  2. Matplotlibでプロット上のグリッドサイズを定義する方法

    Matplotlib を使ってプロット上にグリッド(格子線)を表示し、その間隔(サイズ)を自由に定義する方法を紹介します。基本的な流れは以下の手順のとおりです。 グリッドサイズを定義する手順 figure() メソッドを使って、新しい図(Figure)を作成するか、既存の図をアクティブにします。 サブプロット配置の一部として、add_subplot() で図に Axes(座標軸)を追加します。 入力リストを渡して曲線をプロットします。 margins() メソッドで x 軸・y 軸のマージンを 0 に設定します。 X 軸のグリッド位置を指定するには、set_ticks() に目盛りの座標