[ipywidgets] 23. Dropdownで画像を選択してカラーバーとともに表示

ipywidgets

はじめに

jupyter notebook, labで対話的な操作ができる機能(ipywidgets)のドロップダウンで画像を選択してカラーバーも同時に表示する方法について説明する。

コード

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

解説

モジュールのインポートなど

jupyter labでインタラクティブな操作をするには、冒頭で%matplotlib widgetとする。
jupyter lnotebookの場合は%matplotlib notebookとなる。
所定のGUIにより別ウインドウで表示するには、%matplotlibとする。

make_axes_locatableはカラーバーを表示するためにインポートする。

バージョン

画像データの作成

128 x 128のサイズの画像に強度の高い箇所が複数ある画像を作成する。
空のリストであるim_listに画像データをappendでいれることで画像が3つ入ったリストを作成する。

画像の表示

imshowで画像を表示する。

カラーバーの表示

dividerをmake_axes_locatable(ax)として、divider.append_axes(“top”, size=”5%”, pad=0.02)とすることでカラーバーを画像の上に表示できるようにする。
plt.colorbarでcax=caxとすることでcaxの位置にカラーバーを表示し、orientation=’horizontal’で水平なcolorbarとする。

Dropdownの設定

optionsで[(‘image1’, 0), (‘image2’, 1), (‘image3’, 2)]のようにすると、image1を選択したときに0が返される。valueは初期値となる。

@interactでipywidgetsを有効にする。
f(im_dd)はドロップダウンを選択するたびに実行される。
image0などから任意のものを選択すると、imshowで選択した画像を表示する。
画像の切り替えはimgリストの値の更新により行う。

カラーバーはcbar.mappable.set_climで範囲を設定し、cax.xaxis.set_ticks_position(‘top’)でカラーバーの目盛りを上側にする。

image2の場合

image3の場合

参考

Widget List — Jupyter Widgets 7.5.1 documentation
[matplotlibの使い方] 40. 等高線、カラーマップにおけるログスケールのカラーバー
等高線図とカラーマップでログスケールのカラーバーを表示する方法について説明する。

コメント