はじめに
この記事では、matplotlib.axes.Axes.inset_axesを使用して、プロットした図の特定の部分を拡大し、同じ図内に小さなサブプロットとして表示する方法を解説します。
コード

解説
モジュールのインポート
データの生成
xとyで格子状のデータ(X,Y)をnp.meshgridで作成し、関数f(X,Y)によりZデータを生成します。
図の作成
imshowを使用してZデータを表示します。extentパラメータを[0, 5, 0, 5]に設定することで、X軸とY軸の値と合わせています。
plt.colorbar()を実行すると、データの値に対応するカラーバーが表示されます。
図の中に図を作成
ax.inset_axes([0.45, 0.4, 0.5, 0.5])の中の[]は、[x0, y0, width, height]を表します。これは図(ax)において、(0.45, 0.4)の位置(左下を(0, 0)、右上を(1, 1)とした相対的な位置)に、幅0.5、高さ0.5(これも相対的な大きさ)の新しい図を生成します。
この図の中の図(axins)も、元の図(ax)と同様にimshow()を使って画像を表示できます。
図の中の図の表示範囲
表示範囲はset_xlimとset_ylimで設定し、x軸とy軸のラベルはset_xticklabels(”)とset_yticklabels(”)を使用して非表示にしています。
図の拡大表示位置の明示化
ax.indicate_inset_zoom(axins)とすることで図(ax) の拡大した位置がわかるように四角と線が表示されます。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考
matplotlib.axes.Axes.inset_axes — Matplotlib 3.10.5 documentation
コメント
[…] ここまでは、inset_axesを用いた方法と同じである。 […]