[ipywidgets] 24. Dropdownを活用したインタラクティブなデータ可視化ガイド – matplotlib&seabornでのヒストグラム表示

ipywidgets

はじめに

この記事では、Jupyter環境でipywidgetsのDropdownウィジェットを使って、異なるデータセットを選択し、そのヒストグラムをリアルタイムで表示する方法を解説します。

matplotlibの場合

コード

解説

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

Jupyter Labでインタラクティブな操作を行うには、コードの冒頭で「%matplotlib widget」と記述します。

Jupyter Notebookの場合は「%matplotlib notebook」を使用します。

標準のGUIを使って別ウィンドウで表示したい場合は、「%matplotlib」と指定します。

バージョン

データの作成

np.logspace(3,5,3)を使用すると、[1000, 10000, 100000]の配列を生成できます。

np.random.normal(0,1,i)は、平均値0、標準偏差1の正規分布に従う乱数をi個生成します。

ヒストグラムデータの作成

np.histogramを使用して、ヒストグラムのheightとbinデータを生成します。これらのデータはそれぞれ空のリストに格納します。

Dropdownの設定

optionsに[(‘data1’, 0), (‘data2’, 1), (‘data3’, 2)]のように指定すると、「data1」を選択した際に値「0」が返されます。valueパラメータは初期選択値を設定します。

@interactデコレータを使用してipywidgetsを有効化します。 関数f(dd)はドロップダウンの選択が変更されるたびに実行されます。 ユーザーが「data1」などのオプションを選択すると、まずax.cla()で図をクリアし、次にバー間のすきまが生じないようwidthを調整してから、ax.bar関数で選択されたデータのヒストグラムを表示します。例えば、データ数1000の「data1」のヒストグラムは下図のように表示されます。

data2の場合

データ数が1万の「data2」のヒストグラムは下図のように表示されます。

data3の場合

データ数が10万の「data3」のヒストグラムは下図のように表示されます。

seabornの場合

コード

解説

Dropdownの設定

Dropdownの設定はmatplotlibの場合と同様に行います。

distplotでヒストグラムを表示

最初に空のdistplotリストを作成します。 リストの長さが1以上の場合のみaxx.pop().remove()を実行して図を初期化します。これにより、既存の図がある場合にクリアされます。 次に、ユーザーが選択したデータでsns.distplotを作成し、そのdistplotをリストに追加することで図を表示します。

データ数1000のdata1のヒストグラムは以下のように表示されます。

data2の場合

データ数が1万の「data2」のヒストグラムは下図のように表示されます。

data3の場合

データ数が10万の「data3」のヒストグラムは下図のように表示されます。

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

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

参考

Widget List — Jupyter Widgets 8.1.7 documentation
numpy.random.normal — NumPy v1.15 Manual

コメント