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

matplotlib

はじめに

mpl_toolkits.axes_grid1.inset_locator.zoomed_inset_axesを利用して、図の中の一部を拡大して同じ図中に表示する方法について説明する。

コード

解説

モジュールのインポート

mpl_toolkits.axes_grid1.inset_locator からzoomed_inset_axesとmark_insetをインポートする。

バージョン

データの生成

xとyで格子状のデータ(X,Y)をnp.meshgridで作成し、関数f(X,Y)によりZデータを生成する。

図の作成

imshowでZデータを表示する。extentを[0, 5, 0, 5]とすることにより、X,Yと合うようにしている。
plt.colorbar()でカラーバーが表示される。

ここまでは、下記記事のinset_axesを用いた方法と同じである。

[matplotlib] 13. 図の中の一部を拡大して同じ図中に表示(inset_axes)
matplotlib.axes.Axes.inset_axesを利用して、図の中の一部を拡大して同じ図中に表示する。

図の中に図を作成

axins = zoomed_inset_axes(ax, zoom=2, loc=’upper right’)で図の中に図を作成する。
これにより、図(ax)に、2倍に拡大した図が、右上に表示されるようになる。

axinsにもaxと同様に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″) により、図(axins) の拡大した位置がわかるように図(ax)中に四角と線が表示される。

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

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

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

参考

https://matplotlib.org/api/_as_gen/mpl_toolkits.axes_grid1.inset_locator.zoomed_inset_axes.html
https://matplotlib.org/api/_as_gen/mpl_toolkits.axes_grid1.inset_locator.mark_inset.html

コメント