[ipywidgets] 5. IntSliderで画像の任意の位置の横方向データをラインで表示

ipywidgets

はじめに

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で作成し、表示する方法について説明する。
コードをダウンロード(.pyファイル)

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

参考

Jupyter Widgets — Jupyter Widgets 8.1.2 documentation

コメント