{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%load_ext load_style\n",
"%load_style talk.css"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# IPython notebook widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"from `version 2.0`, IPython includes an architecture for **interactive widgets** that tie together Python code running in the kernel and JavaScript/HTML/CSS running in the browser. These widgets enable users to **explore their code and data interactively**."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from ipywidgets import interactive, interact, fixed\n",
"from IPython.html import widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### simple function that just prints its argument"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def f(x):\n",
" print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### if x is a integer, a widget slider will be created"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10\n"
]
}
],
"source": [
"interact(f, x=10); "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### you can also use a python `decorator` syntax"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from datetime import datetime"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10\n"
]
}
],
"source": [
"@interact(x=10)\n",
"def f(x):\n",
" print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### If x is Boolean (True / False), a checkbox is created"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n"
]
}
],
"source": [
"interact(f, x=True); "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### If x is a string: text box"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hi there!\n"
]
}
],
"source": [
"interact(f, x='Hi there!');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Widgets can be called with arguments to customize them"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"6\n"
]
}
],
"source": [
"interact(f, x=widgets.IntSlider(min=-10,max=10,step=2))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### An example with plot"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import numpy as np\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"@interact(degree=2)\n",
"def f(degree):\n",
" x = np.linspace(0,1,100)\n",
" f, ax = plt.subplots(figsize=(10,5))\n",
" plt.plot(x, x**degree)\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### An example using [sympy](http://sympy.org/en/index.html) to factor polynomials"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from IPython.display import display"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from sympy import Symbol, Eq, factor, init_printing\n",
"init_printing(use_latex='mathjax')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x = Symbol('x')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def factorit(n):\n",
" display(Eq(x**n-1, factor(x**n-1)))"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"$$x^{12} - 1 = \\left(x - 1\\right) \\left(x + 1\\right) \\left(x^{2} + 1\\right) \\left(x^{2} - x + 1\\right) \\left(x^{2} + x + 1\\right) \\left(x^{4} - x^{2} + 1\\right)$$"
],
"text/plain": [
" 12 ⎛ 2 ⎞ ⎛ 2 ⎞ ⎛ 2 ⎞ ⎛ 4 2 ⎞\n",
"x - 1 = (x - 1)⋅(x + 1)⋅⎝x + 1⎠⋅⎝x - x + 1⎠⋅⎝x + x + 1⎠⋅⎝x - x + 1⎠"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"factorit(12)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"$$x^{24} - 1 = \\left(x - 1\\right) \\left(x + 1\\right) \\left(x^{2} + 1\\right) \\left(x^{4} + 1\\right) \\left(x^{2} - x + 1\\right) \\left(x^{2} + x + 1\\right) \\left(x^{4} - x^{2} + 1\\right) \\left(x^{8} - x^{4} + 1\\right)$$"
],
"text/plain": [
" 24 ⎛ 2 ⎞ ⎛ 4 ⎞ ⎛ 2 ⎞ ⎛ 2 ⎞ ⎛ 4 2\n",
"x - 1 = (x - 1)⋅(x + 1)⋅⎝x + 1⎠⋅⎝x + 1⎠⋅⎝x - x + 1⎠⋅⎝x + x + 1⎠⋅⎝x - x \n",
"\n",
" ⎞ ⎛ 8 4 ⎞\n",
" + 1⎠⋅⎝x - x + 1⎠"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(factorit, n=(2,40));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Another example with Pandas"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"xdf = pd.DataFrame({'A':np.random.randn(5), 'B':np.random.randn(5)})"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"xdf.plot()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def plot_df(label):\n",
" xdf[label].plot()"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"w = interactive(plot_df, label=['A','B'])"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(w)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[NbConvertApp] Converting notebook IPython_widgets.ipynb to html\n",
"[NbConvertApp] Writing 442485 bytes to IPython_widgets.html\n"
]
}
],
"source": [
"!ipython nbconvert IPython_widgets.ipynb --to html"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
},
"latex_envs": {
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 0
}
},
"nbformat": 4,
"nbformat_minor": 0
}