はじめに
jupyter notebookの対話的にパラメータを調整できる機能(ipywidgets IntSlider)で画像中の任意の位置の横方向データを線で表示する方法について説明する。
コード
解説
モジュールのインポート
データの生成
図の表示
ax1に画像、ax2にラインを表示する。
axhlineでx軸に対して平行な線を表示する。
後ほどinteractでデータをセットするので、 ax2.plot([],[])のように空プロットしておく。
カラーバーを画像上に表示
make_axes_locatableで画像と同じサイズのカラーバーが作成できる。
orientation=’horizontal’で水平方向のカラーバーとなる。
cax.xaxis.set_ticks_position(‘top’)で目盛りが上側となる。
make_axes_locatableについては下記で解説した。
[matplotlib] 18. カラーバーを図にあわせる
疑似カラーマップのカラーバーを図にあわせて表示
ipywidgetsの設定
IntSliderは整数を選択できるスライダーとなる。下限値と上限値を設定する。
Pythonのデコレータ構文@を使うことで簡潔に記述できる。
numはIntSlider で選択する値となる。
選択したnumの位置で画像上にラインを引き、その部分のデータを右図に表示する。
スライダーで位置を変化させたときの図
任意の位置の任意の方向のデータを取得したいときは下記記事で解説したskimageのprofile_lineを用いると良い。
[matplotlib] 62. mpl_connect('button_press_event', onclick)により、画像上でクリックした2点間のプロファイルを表示
matplotlibのbutton_press_eventで取得した座標を用いて、画像上の任意の位置のプロファイルをskimageのprofile_lineで作成し、表示する方法について説明する。
参考
Jupyter Widgets — Jupyter Widgets 8.1.5 documentation
コメント