[matplotlib] 14. 図の中の一部を拡大して同じ図中に表示(zoomed_inset_axes)

matplotlib

はじめに

matplotlibの拡張モジュールmpl_toolkits.axes_grid1.inset_locatorを使用して、グラフの特定領域を拡大し、同一図内に表示する方法を解説します。

コード

解説

モジュールのインポート

mpl_toolkits.axes_grid1.inset_locator モジュールからzoomed_inset_axes関数とmark_inset関数をインポートします。

バージョン

データの生成

np.meshgridを使用してx軸とy軸の値から格子状のデータ(X,Y)を作成し、それらを関数f(X,Y)に適用してZデータを生成します。

図の作成

imshowを使用してZデータを表示します。extentパラメータを[0, 5, 0, 5]に設定することで、X軸とY軸の値と適切に対応させています。 plt.colorbar()を実行するとカラーバーが表示されます。

ここまでの手順は、下記記事で説明されているinset_axesを用いた方法と同様です。

[matplotlib] 13. 図の中の一部を拡大して同じ図中に表示する方法(inset_axes)
Matplotlibのinset_axes機能を使って図の一部を拡大して同じ図内に表示する方法を解説。基本的な使い方から実装例まで、データの詳細な分析や可視化を向上させるテクニックを紹介します。

図の中に図を作成

axins = zoomed_inset_axes(ax, zoom=2, loc=’upper right’)を使用して図の中に拡大図を作成します。 これにより、元の図(ax)内に、2倍に拡大した図が右上に表示されます。

この拡大図(axins)にも、元の図と同様にimshow()で画像を表示します。

図の中の図の表示範囲

set_xlim、set_ylimで表示範囲を設定し、axins.yaxis.get_major_locator().set_params(nbins=5)で目盛の数を5に調整します。また、plt.setp(axins.get_xticklabels(), visible=False)を使用してx軸とy軸のラベルを非表示にします。

図の拡大表示位置の明示化

mark_inset(ax, axins, loc1=2, loc2=4, fc=”none”, ec=”0.5″) により、図(ax)中に四角と線が表示され、拡大した位置(axins)がわかるようになります。

locパラメータは小さい図と拡大した場所を結ぶ線の位置を設定します。右上が1で、反時計回りに2、3、4となります。この例ではloc1=2、loc2=4と指定しているため、左上と右下に線が結ばれています。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

mpl_toolkits.axes_grid1.inset_locator.zoomed_inset_axes — Matplotlib 3.10.6 documentation
mpl_toolkits.axes_grid1.inset_locator.mark_inset — Matplotlib 3.10.6 documentation

コメント