[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を用いた方法と同じである。

図の中に図を作成

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としているので、左上と右下で線が結ばれている。

参考

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

コメント