ipywidgetsの使い方

最終更新: 2017-06-19 16:11

Jupyter Notebookでインタラクティブな操作を実現するためのライブラリであるipywidgetsを紹介する。

インストール

Jupyter Notebook自体のインストールについてはJupyter notebookをセットアップする - kivantium活動日記を参照。

READMEのInstallの項目に従ってipywidgetsをインストールする。自分の環境では

pip install ipywidgets
jupyter nbextension enable --py --sys-prefix widgetsnbextension

とするだけで十分だった。

使用例

Jupyter Notebookを起動して

%matplotlib inline
from ipywidgets import interact
import numpy as np

def scatter(num_data):
    x = np.linspace(0, num_data, 1000)
    plt.plot(x, np.sin(x))
    plt.xlim(0, 10)
    plt.ylim(-1.0, 1.0)
    plt.show()

interact(scatter, num_data=(0, 10, 0.1));

とすると次のような操作が可能となる。

ipywidgetsのテスト pic.twitter.com/OyBIkh0tFG

— 川奈 清 (@kivantium) 2017年6月10日

最もよく使うであろうスライダーの他にも、プログレスバーやラジオボタンなどの機能も用意されている。
また、Pythonのデコレータ構文@...を用いると簡潔に記述することができる。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact, FloatSlider, RadioButtons

amplitude = FloatSlider(min=0.0, max=1.0, step=0.11, value=0.0)
color = RadioButtons(options=['blue', 'green', 'red'])

@interact(amplitude=amplitude, color=color)
def plot(amplitude, color):
    x = np.linspace(0, 10, 1000)
    plt.plot(x, amplitude*np.sin(x), color=color, lw=5, alpha=0.4)
    plt.xlim(0, 10)
    plt.ylim(-1.0, 1.0)
    plt.show()

ipywidgetのテスト2 pic.twitter.com/bTr78R9qCc

— 川奈 清 (@kivantium) 2017年6月10日

interactについて

2つ目の例にあるようにinteractはスライドバーなどのオブジェクトを対応させるのが基本の使い方だが、1つ目の例のように省略することもできる。(省略の仕方は以下の通り。- Using Interact — Jupyter Widgets 7.0.0a4 documentationから引用)

Keyword argument

Widget

True or False

Checkbox

'Hi there'

Text

value or (min,max) or (min,max,step) if integers are passed

IntSlider

value or (min,max) or (min,max,step) if floats are passed

FloatSlider

['orange','apple'] or {'one':1,'two':2}

Dropdown

参考ページ