はじめに
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を用いた方法と同様です。

図の中に図を作成
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ファイル)
コメント