[matplotlib] 13. 図の中の一部を拡大して同じ図中に表示する方法(inset_axes)

matplotlib

はじめに

この記事では、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

コメント

  1. […] ここまでは、inset_axesを用いた方法と同じである。 […]