Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# IPython Notebook Tutorial"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"IPython has a beautiful Notebook that lets you write and execute code, analyze data, embed content, and share reproducible work. IPython lets you easily share your code, data, plots, and explanation in one Notebook. Publishing is flexible: PDF, HTML, ipynb, dashboards, slides, and more. Code cells are based on an input and output format. For example:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hello world\n"
]
}
],
"source": [
"print \"hello world\" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Table Of Contents"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This tutorial will cover:\n",
"<br> \n",
"* [Introduction](#I.-Introduction): installation, helpful commands, package management\n",
"* [SciPy Stack](#II.-SciPy-Stack): SciPy, Numpy, pandas\n",
"* [Plotting](#III.-Plotting): matplotlib, mpld3, pandas, maps, 3D plotting, ggplot for Python, Seaborn, ggplot2, and R\n",
"* [Embedding](#IV.-Embedding): iframes, videos, LaTeX\n",
"* [Publishing](#V.-Publishing): files, widgets, dashboards, styling\n",
"<br>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# I. Introduction "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"There are a few ways to use an IPython Notebook. For Windows users, you'll need [```setuptools```](http://ipython.org/ipython-doc/2/install/install.html#windows).\n",
"\n",
"* If you have ```setuptools``` or ```pip``` installed, you can open a terminal and type: ```$ pip install ipython```.\n",
"* [Anaconda](https://store.continuum.io/cshop/anaconda/) and [Enthought](https://store.enthought.com/downloads/#default) allow you to download a desktop version of IPython Notebook.\n",
"* [coLaboratory](https://store.enthought.com/downloads/#default) allows you to run Notebooks using Google Chrome. \n",
"* [Docker containers](https://hub.docker.com/r/ipython/notebook/) let you run Notebooks.\n",
"* [Domino](http://support.dominodatalab.com/hc/en-us/articles/204856585-Jupyter-Notebooks), [Authorea](https://www.authorea.com/users/3/articles/3904/_show_article), and [Wakari](https://wakari.io/) offer web-based Notebooks.\n",
"* [tmpnb](https://github.com/jupyter/tmpnb) launches a temporary online Notebook for individual users. \n",
"* Hosted services like [Sciencebox](https://aws.amazon.com/marketplace/pp/B00KQY1T32/ref=mkt_wir_yhatsciencebox) let users launch a prebuilt virtual machine.\n",
"\n",
"<br>\n",
"Once you've installed the Notebook, you start from your terminal by calling ```$ ipython notebook```. This will open a browser on a [localhost](https://en.wikipedia.org/wiki/Localhost) to the URL of your Notebooks, by default http://127.0.0.1:8888. Windows users need to open up their Command Prompt. You'll see a dashboard with all your Notebooks. You can launch your Notebooks from there. The Notebook has the advantage of looking the same when you're coding and publishing. You just have all the options to move code, run cells, change kernels, and [use Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) when you're running a NB. Here's what a Notebook looks like in action if you call it from your terminal.\n",
"<br>\n",
"<br>\n",
"\n",
"<img src=\"http://i.imgur.com/Mlleku9.gif\" /></a>\n",
"<br>\n",
"<br>\n",
"<br>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Helpful commands"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"IPython supports tab completion. You can type ```object_name.<TAB>``` to view an object’s attributes. For tips on cell magics, running Notebooks, and exploring objects, check out the [IPython docs](https://ipython.org/ipython-doc/dev/interactive/tutorial.html#introducing-ipython). IPython also has a few [helpful commands](https://ipython.org/ipython-doc/dev/interactive/tutorial.html#the-four-most-helpful-commands) like:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Type help() for interactive help, or help(object) for help about object."
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"help # introduction and overview of features"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%quickref # opens quick reference"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Notebook defaults to C:\\Users\\USERNAME. You can call ```ipython notebook --help-all``` then [change your directory](http://stackoverflow.com/questions/15680463/change-ipython-working-directory) if needed. You can also [use ```%run```](http://stackoverflow.com/questions/3438531/ipython-workflow-edit-run) to run local Python scripts you've written. \n",
"\n",
"<br>\n",
"IPython has [keyboard shortcuts](https://ipython.org/ipython-doc/1/interactive/notebook.html#keyboard-shortcuts). ```Shift-Enter``` will run a cell, ```Ctrl-Enter``` will run a cell in-place, ```Alt-Enter``` will run a cell and insert another below."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Package management"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"When installing packages in IPython, you either need to install the package in your actual Python shell, or run the ```!``` prefix, e.g.:\n",
"\n",
" !pip install packagename\n",
" \n",
"You may want to [reload submodules](http://stackoverflow.com/questions/5364050/reloading-submodules-in-ipython) if you've edited the code in one. IPython comes with automatic reloading magic. You can reload all changed modules before executing a new line. \n",
"\n",
" %load_ext autoreload\n",
" %autoreload 2\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# II. SciPy Stack"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SciPy & NumPy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[```SciPy```](http://www.scipy.org/) is a Python-based ecosystem of packages for math, science, and engineering. We'll show a quick [example](https://oneau.wordpress.com/2011/02/28/simple-statistics-with-scipy/) below. [```NumPy```](www.numpy.org) is a package for scientific computing with tools for algebra, random number generation, integrating with databases, and managing data. NumPy functions [have been imported](http://stackoverflow.com/questions/6200910/relationship-between-scipy-and-numpy) into the SciPy namespace so users don't have to differentiate between them. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import scipy as sp\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"100\n"
]
}
],
"source": [
"s = sp.randn(100)\n",
"print len(s)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can print the mean of our data into our Notebook. Since the returned value is a NumPy array we can find and print descriptive statistics about the random numbers we created with SciPy. "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean : 0.029571\n"
]
}
],
"source": [
"print(\"Mean : {0:8.6f}\".format(s.mean()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Arrays](http://www.python-course.eu/numpy.php) are the central part of NumPy and are more efficient lists of Python. The elements of a NumPy array have to be of the same type, usually float or int. "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([42, 47, 11])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = np.array([42,47,11], int)\n",
"x = np.array([42,47,11], int)\n",
"x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## pandas"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you have a tabular data structure, [```pandas```](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html) is the way to go. Dataframes are easy to make, and handle data better than Python lists or tuples. The [10 minutes to pandas](http://pandas.pydata.org/pandas-docs/stable/10min.html) guide is a good introduction and a useful exercise. So is Michael Hansen's [tutorial](http://synesthesiam.com/posts/an-introduction-to-pandas.html). "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"One can create a dataframe in pandas with the handy functions in [read_csv](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html). You can read from a URL or a local file. Here we'll make a dataframe from a matplotlib plot we'll make below with Plotly. You can append .py, .r, .m, .jl, .json, .js, .png, .pdf, .png, .svg, .embed, .xlsx, and .csv to any Plotly URL to see extensions of the figure."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df = pd.read_csv(\"https://plot.ly/~MattSundquist/20387.csv\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can [```describe```](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.describe.html) the dataframe we've just created."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>line0_volts</th>\n",
" <th>line0_time, line1_time, line3_time</th>\n",
" <th>line1_volts</th>\n",
" <th>line2_volts</th>\n",
" <th>line2_time</th>\n",
" <th>line3_volts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td> 200.000000</td>\n",
" <td> 200.000000</td>\n",
" <td> 2.000000e+02</td>\n",
" <td> 20.000000</td>\n",
" <td> 20.000000</td>\n",
" <td> 2.000000e+02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td> 0.434498</td>\n",
" <td> 0.995000</td>\n",
" <td>-1.665335e-18</td>\n",
" <td> 0.620175</td>\n",
" <td> 0.950000</td>\n",
" <td> 6.708533e-02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td> 0.243705</td>\n",
" <td> 0.578792</td>\n",
" <td> 7.088812e-01</td>\n",
" <td> 0.324605</td>\n",
" <td> 0.591608</td>\n",
" <td> 3.402314e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td> 0.136695</td>\n",
" <td> 0.000000</td>\n",
" <td>-1.000000e+00</td>\n",
" <td> 0.000000</td>\n",
" <td> 0.000000</td>\n",
" <td>-4.781305e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td> 0.224812</td>\n",
" <td> 0.497500</td>\n",
" <td>-6.956525e-01</td>\n",
" <td> 0.388217</td>\n",
" <td> 0.475000</td>\n",
" <td>-1.651344e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td> 0.369728</td>\n",
" <td> 0.995000</td>\n",
" <td> 6.123234e-17</td>\n",
" <td> 0.667501</td>\n",
" <td> 0.950000</td>\n",
" <td> 3.713929e-17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td> 0.608055</td>\n",
" <td> 1.492500</td>\n",
" <td> 6.956525e-01</td>\n",
" <td> 0.885674</td>\n",
" <td> 1.425000</td>\n",
" <td> 2.722606e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td> 1.000000</td>\n",
" <td> 1.990000</td>\n",
" <td> 1.000000e+00</td>\n",
" <td> 1.064711</td>\n",
" <td> 1.900000</td>\n",
" <td> 7.883040e-01</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" line0_volts line0_time, line1_time, line3_time line1_volts \\\n",
"count 200.000000 200.000000 2.000000e+02 \n",
"mean 0.434498 0.995000 -1.665335e-18 \n",
"std 0.243705 0.578792 7.088812e-01 \n",
"min 0.136695 0.000000 -1.000000e+00 \n",
"25% 0.224812 0.497500 -6.956525e-01 \n",
"50% 0.369728 0.995000 6.123234e-17 \n",
"75% 0.608055 1.492500 6.956525e-01 \n",
"max 1.000000 1.990000 1.000000e+00 \n",
"\n",
" line2_volts line2_time line3_volts \n",
"count 20.000000 20.000000 2.000000e+02 \n",
"mean 0.620175 0.950000 6.708533e-02 \n",
"std 0.324605 0.591608 3.402314e-01 \n",
"min 0.000000 0.000000 -4.781305e-01 \n",
"25% 0.388217 0.475000 -1.651344e-01 \n",
"50% 0.667501 0.950000 3.713929e-17 \n",
"75% 0.885674 1.425000 2.722606e-01 \n",
"max 1.064711 1.900000 7.883040e-01 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe() # "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also examine how many rows we have. Calling the ```columns``` property gives you columns. "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"200"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calling .head() will print the first five rows and column headers by default, or we can specify a number."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>line0_volts</th>\n",
" <th>line0_time, line1_time, line3_time</th>\n",
" <th>line1_volts</th>\n",
" <th>line2_volts</th>\n",
" <th>line2_time</th>\n",
" <th>line3_volts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 1.000000</td>\n",
" <td> 0.00</td>\n",
" <td> 0.000000</td>\n",
" <td> 0.000000</td>\n",
" <td> 0.0</td>\n",
" <td> 0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 0.990050</td>\n",
" <td> 0.01</td>\n",
" <td> 0.062791</td>\n",
" <td> 0.095310</td>\n",
" <td> 0.1</td>\n",
" <td> 0.062166</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 0.980199</td>\n",
" <td> 0.02</td>\n",
" <td> 0.125333</td>\n",
" <td> 0.182322</td>\n",
" <td> 0.2</td>\n",
" <td> 0.122851</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> 0.970446</td>\n",
" <td> 0.03</td>\n",
" <td> 0.187381</td>\n",
" <td> 0.262364</td>\n",
" <td> 0.3</td>\n",
" <td> 0.181843</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> 0.960789</td>\n",
" <td> 0.04</td>\n",
" <td> 0.248690</td>\n",
" <td> 0.336472</td>\n",
" <td> 0.4</td>\n",
" <td> 0.238939</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" line0_volts line0_time, line1_time, line3_time line1_volts line2_volts \\\n",
"0 1.000000 0.00 0.000000 0.000000 \n",
"1 0.990050 0.01 0.062791 0.095310 \n",
"2 0.980199 0.02 0.125333 0.182322 \n",
"3 0.970446 0.03 0.187381 0.262364 \n",
"4 0.960789 0.04 0.248690 0.336472 \n",
"\n",
" line2_time line3_volts \n",
"0 0.0 0.000000 \n",
"1 0.1 0.062166 \n",
"2 0.2 0.122851 \n",
"3 0.3 0.181843 \n",
"4 0.4 0.238939 "
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head() # examine dataframe"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can rename our columns once we've made a dataframe."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df.columns = [\"volts_1\", \"time_1\", \"volts_2\", \"volts_2\",\n",
" \"time_2\", \"volts_4\"]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>volts_1</th>\n",
" <th>time_1</th>\n",
" <th>volts_2</th>\n",
" <th>volts_2</th>\n",
" <th>time_2</th>\n",
" <th>volts_4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 1</td>\n",
" <td> 0</td>\n",
" <td> 0</td>\n",
" <td> 0</td>\n",
" <td> 0</td>\n",
" <td> 0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" volts_1 time_1 volts_2 volts_2 time_2 volts_4\n",
"0 1 0 0 0 0 0"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use pandas for statistics and to examine our rows and columns. "
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0 1.000000\n",
"1 0.990050\n",
"2 0.980199\n",
"3 0.970446\n",
"4 0.960789\n",
"Name: volts_1, dtype: float64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.volts_1.head()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.24370527032639763"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.volts_1.std()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"Most pandas functions also work on an entire dataframe. For example, calling ```std()``` calculates the standard deviation for each column."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"volts_1 0.243705\n",
"time_1 0.578792\n",
"volts_2 0.708881\n",
"volts_2 0.324605\n",
"time_2 0.591608\n",
"volts_4 0.340231\n",
"dtype: float64"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.std()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# III. Plotting"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can [use matplotlib](https://ipython.org/ipython-doc/3/notebook/notebook.html#plotting) inside your IPython Notebook by calling ```%matplotlib inline```, which has the advantage of keeping your plots in one place. If you're having trouble running matplotlib, [here](http://stackoverflow.com/questions/19410042/how-to-make-ipython-notebook-matplotlib-plot-inline) are a few common solutions."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt # side-stepping mpl backend\n",
"import matplotlib.gridspec as gridspec # subplots"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import plotly.plotly as py\n",
"from plotly.graph_objs import *\n",
"import plotly.tools as tls"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c106f90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig1 = plt.figure()\n",
"# Make a legend for specific lines.\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"\n",
"t1 = np.arange(0.0, 2.0, 0.1)\n",
"t2 = np.arange(0.0, 2.0, 0.01)\n",
"\n",
"# note that plot returns a list of lines. The \"l1, = plot\" usage\n",
"# extracts the first element of the list into l1 using tuple\n",
"# unpacking. So l1 is a Line2D instance, not a sequence of lines\n",
"l1, = plt.plot(t2, np.exp(-t2))\n",
"l2, l3 = plt.plot(t2, np.sin(2 * np.pi * t2), '--go', t1, np.log(1 + t1), '.')\n",
"l4, = plt.plot(t2, np.exp(-t2) * np.sin(2 * np.pi * t2), 'rs-.')\n",
"\n",
"plt.xlabel('time')\n",
"plt.ylabel('volts')\n",
"plt.title('Damped oscillation')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can do a bit of interactive plotting. Head to the [Plotly getting started](https://plot.ly/python/) page to get a key and install the API. Calling the plot with ```iplot``` automaticallly generates an interactive version of the matplotlib plot inside the Notebook in an iframe. You can control the privacy with [```world_readable```](https://plot.ly/python/privacy/). We'll use ```strip_style``` to apply the Plotly defaults. You can filter zoom by clicking and dragging and see text if you hover your mouse."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/20387.embed\" height=\"525\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"py.iplot_mpl(fig1, strip_style = True, filename='ipython/mpl_example')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## mpld3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use [```mpld3```](https://mpld3.github.io/index.html) to make interactive plots in the Notebook from matplotlib figures."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"<style>\n",
"\n",
"</style>\n",
"\n",
"<div id=\"fig_el69244973710246510545743\"></div>\n",
"<script>\n",
"function mpld3_load_lib(url, callback){\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = true;\n",
" s.onreadystatechange = s.onload = callback;\n",
" s.onerror = function(){console.warn(\"failed to load library \" + url);};\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
"}\n",
"\n",
"if(typeof(mpld3) !== \"undefined\" && mpld3._mpld3IsLoaded){\n",
" // already loaded: just create the figure\n",
" !function(mpld3){\n",
" \n",
" mpld3.draw_figure(\"fig_el69244973710246510545743\", {\"axes\": [{\"xlim\": [0.0, 2.0], \"yscale\": \"linear\", \"axesbg\": \"#FFFFFF\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#000000\", \"text\": \"time\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.5, -0.080645161290322578], \"rotation\": -0.0, \"id\": \"el6924497392400\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#000000\", \"text\": \"volts\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [-0.094842069892473138, 0.5], \"rotation\": -90.0, \"id\": \"el6924497411216\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#000000\", \"text\": \"Damped oscillation\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.5, 1.0224014336917562], \"rotation\": -0.0, \"id\": \"el6924497417104\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [0.0, 2.0], \"ylim\": [-1.0, 1.5], \"paths\": [], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"gridOn\": false}, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 5, \"tickvalues\": null}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"gridOn\": false}, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 6, \"tickvalues\": null}], \"lines\": [{\"color\": \"#0000FF\", \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"10,0\", \"zorder\": 2, \"alpha\": 1, \"xindex\": 0, \"linewidth\": 1.0, \"data\": \"data01\", \"id\": \"el6924497542992\"}, {\"color\": \"#007F00\", \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"6,6\", \"zorder\": 2, \"alpha\": 1, \"xindex\": 0, \"linewidth\": 1.0, \"data\": \"data01\", \"id\": \"el6924497380560\"}, {\"color\": \"#FF0000\", \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"4,4,2,4\", \"zorder\": 2, \"alpha\": 1, \"xindex\": 0, \"linewidth\": 1.0, \"data\": \"data01\", \"id\": \"el6924497551888\"}], \"markers\": [{\"edgecolor\": \"#000000\", \"facecolor\": \"#007F00\", \"edgewidth\": 0.5, \"yindex\": 2, \"coordinates\": \"data\", \"zorder\": 2, \"markerpath\": [[[0.0, 3.0], [0.7956093000000001, 3.0], [1.5587396123545605, 2.683901074764725], [2.121320343559643, 2.121320343559643], [2.683901074764725, 1.5587396123545605], [3.0, 0.7956093000000001], [3.0, 0.0], [3.0, -0.7956093000000001], [2.683901074764725, -1.5587396123545605], [2.121320343559643, -2.121320343559643], [1.5587396123545605, -2.683901074764725], [0.7956093000000001, -3.0], [0.0, -3.0], [-0.7956093000000001, -3.0], [-1.5587396123545605, -2.683901074764725], [-2.121320343559643, -2.121320343559643], [-2.683901074764725, -1.5587396123545605], [-3.0, -0.7956093000000001], [-3.0, 0.0], [-3.0, 0.7956093000000001], [-2.683901074764725, 1.5587396123545605], [-2.121320343559643, 2.121320343559643], [-1.5587396123545605, 2.683901074764725], [-0.7956093000000001, 3.0], [0.0, 3.0]], [\"M\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"Z\"]], \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el6924497380560pts\"}, {\"edgecolor\": \"#007F00\", \"facecolor\": \"#007F00\", \"edgewidth\": 0.5, \"yindex\": 1, \"coordinates\": \"data\", \"zorder\": 2, \"markerpath\": [[[0.0, 1.5], [0.39780465000000004, 1.5], [0.7793698061772802, 1.3419505373823626], [1.0606601717798214, 1.0606601717798214], [1.3419505373823626, 0.7793698061772802], [1.5, 0.39780465000000004], [1.5, 0.0], [1.5, -0.39780465000000004], [1.3419505373823626, -0.7793698061772802], [1.0606601717798214, -1.0606601717798214], [0.7793698061772802, -1.3419505373823626], [0.39780465000000004, -1.5], [0.0, -1.5], [-0.39780465000000004, -1.5], [-0.7793698061772802, -1.3419505373823626], [-1.0606601717798214, -1.0606601717798214], [-1.3419505373823626, -0.7793698061772802], [-1.5, -0.39780465000000004], [-1.5, 0.0], [-1.5, 0.39780465000000004], [-1.3419505373823626, 0.7793698061772802], [-1.0606601717798214, 1.0606601717798214], [-0.7793698061772802, 1.3419505373823626], [-0.39780465000000004, 1.5], [0.0, 1.5]], [\"M\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"Z\"]], \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el6924497553552pts\"}, {\"edgecolor\": \"#000000\", \"facecolor\": \"#FF0000\", \"edgewidth\": 0.5, \"yindex\": 3, \"coordinates\": \"data\", \"zorder\": 2, \"markerpath\": [[[-3.0, 3.0], [3.0, 3.0], [3.0, -3.0], [-3.0, -3.0]], [\"M\", \"L\", \"L\", \"L\", \"Z\"]], \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el6924497551888pts\"}], \"id\": \"el6924497370960\", \"ydomain\": [-1.0, 1.5], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.77500000000000002, 0.77500000000000002]}], \"height\": 320.0, \"width\": 480.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}], \"data\": {\"data02\": [[0.0, 0.0], [0.1, 0.09531017980432493], [0.2, 0.1823215567939546], [0.30000000000000004, 0.26236426446749106], [0.4, 0.33647223662121284], [0.5, 0.4054651081081644], [0.6000000000000001, 0.47000362924573563], [0.7000000000000001, 0.5306282510621705], [0.8, 0.5877866649021191], [0.9, 0.6418538861723947], [1.0, 0.6931471805599453], [1.1, 0.7419373447293773], [1.2000000000000002, 0.7884573603642703], [1.3, 0.8329091229351039], [1.4000000000000001, 0.8754687373539001], [1.5, 0.9162907318741551], [1.6, 0.9555114450274363], [1.7000000000000002, 0.9932517730102834], [1.8, 1.0296194171811581], [1.9000000000000001, 1.0647107369924285]], \"data01\": [[0.0, 1.0, 0.0, 0.0], [0.01, 0.9900498337491681, 0.06279051952931337, 0.062165743421020596], [0.02, 0.9801986733067553, 0.12533323356430426, 0.12285146926097672], [0.03, 0.9704455335485082, 0.1873813145857246, 0.18184335981016436], [0.04, 0.9607894391523232, 0.2486898871648548, 0.23893861721197537], [0.05, 0.951229424500714, 0.3090169943749474, 0.2939460577202216], [0.06, 0.9417645335842487, 0.3681245526846779, 0.3466866476599959], [0.07, 0.9323938199059483, 0.4257792915650727, 0.39699398009920667], [0.08, 0.9231163463866358, 0.4817536741017153, 0.4447146914951135], [0.09, 0.9139311852712282, 0.5358267949789967, 0.4897088178352378], [0.1, 0.9048374180359595, 0.5877852522924731, 0.5318500900439365], [0.11, 0.8958341352965282, 0.6374239897486896, 0.5710261686737804], [0.12, 0.8869204367171575, 0.6845471059286886, 0.6071388181437388], [0.13, 0.8780954309205613, 0.7289686274214116, 0.6401040210231744], [0.14, 0.8693582353988059, 0.7705132427757893, 0.6698520330909719], [0.15, 0.8607079764250578, 0.8090169943749473, 0.6963273801219433], [0.16, 0.8521437889662113, 0.8443279255020151, 0.7194887975672681], [0.17, 0.8436648165963837, 0.8763066800438637, 0.7393091145013921], [0.18, 0.835270211411272, 0.9048270524660196, 0.7557750834039303], [0.19, 0.8269591339433623, 0.9297764858882513, 0.7688871575310512], [0.2, 0.8187307530779818, 0.9510565162951535, 0.778659217806053], [0.21, 0.8105842459701871, 0.9685831611286311, 0.7851182513228716], [0.22, 0.8025187979624785, 0.9822872507286886, 0.788303983708655], [0.23, 0.794533602503334, 0.9921147013144779, 0.7882684677319114], [0.24, 0.7866278610665535, 0.9980267284282716, 0.7850756306707813], [0.25, 0.7788007830714049, 1.0, 0.7788007830714049], [0.26, 0.7710515858035663, 0.9980267284282716, 0.7695300916289639], [0.27, 0.7633794943368531, 0.9921147013144778, 0.7573600190136042], [0.28, 0.7557837414557255, 0.9822872507286886, 0.7423967335399866], [0.29, 0.7482635675785653, 0.9685831611286312, 0.7247554916426339], [0.3, 0.7408182206817179, 0.9510565162951536, 0.7045599961695289], [0.31, 0.7334469562242892, 0.9297764858882513, 0.6819417335436537], [0.32, 0.7261490370736909, 0.9048270524660195, 0.657039292866426], [0.33, 0.7189237334319262, 0.8763066800438635, 0.6299976700484707], [0.34, 0.7117703227626097, 0.844327925502015, 0.6009675600520539], [0.35000000000000003, 0.7046880897187134, 0.8090169943749475, 0.5701046403160569], [0.36, 0.697676326071031, 0.7705132427757893, 0.5375688484088891], [0.37, 0.6907343306373547, 0.7289686274214116, 0.5035236569175598], [0.38, 0.6838614092123558, 0.6845471059286888, 0.46813534853263294], [0.39, 0.6770568744981647, 0.6374239897486899, 0.4315722942293981], [0.4, 0.6703200460356393, 0.5877852522924732, 0.39400423737576057], [0.41000000000000003, 0.6636502501363194, 0.5358267949789967, 0.35560158651755347], [0.42, 0.6570468198150567, 0.4817536741017156, 0.3165347195027515], [0.43, 0.6505090947233165, 0.4257792915650729, 0.2769733015079306], [0.44, 0.6440364210831414, 0.36812455268467814, 0.23708561942387243], [0.45, 0.6376281516217733, 0.3090169943749475, 0.1970379349430137], [0.46, 0.631283645506926, 0.2486898871648548, 0.15699385857013562], [0.47000000000000003, 0.6250022682827008, 0.18738131458572455, 0.11711374664987216], [0.48, 0.6187833918061408, 0.12533323356430454, 0.07755412337095162], [0.49, 0.6126263941844161, 0.06279051952931358, 0.03846712956820954], [0.5, 0.6065306597126334, 1.2246467991473532e-16, 7.42785831001809e-17], [0.51, 0.6004955788122659, -0.06279051952931333, -0.03770542936867789], [0.52, 0.5945205479701944, -0.1253332335643043, -0.07451318269752656], [0.53, 0.5886049696783552, -0.18738131458572477, -0.11029357299002086], [0.54, 0.5827482523739896, -0.24868988716485502, -0.14492359712840394], [0.55, 0.5769498103804866, -0.30901699437494773, -0.178287296308974], [0.56, 0.5712090638488149, -0.36812455268467836, -0.21027608111877885], [0.5700000000000001, 0.5655254386995371, -0.4257792915650727, -0.24078902065151586], [0.58, 0.559898366565402, -0.481753674101715, -0.26973309521643124], [0.59, 0.5543272847345071, -0.5358267949789964, -0.2970234123487005], [0.6, 0.5488116360940265, -0.587785252292473, -0.32258338598257225], [0.61, 0.5433508690744998, -0.6374239897486896, -0.3463448787988856], [0.62, 0.5379444375946745, -0.6845471059286887, -0.3682483079058705], [0.63, 0.5325918010068972, -0.7289686274214113, -0.3882427141558953], [0.64, 0.5272924240430485, -0.7705132427757894, -0.4062857955405159], [0.65, 0.522045776761016, -0.8090169943749473, -0.4223439052413319], [0.66, 0.5168513344916992, -0.8443279255020153, -0.43639201504432457], [0.67, 0.5117085777865424, -0.8763066800438636, -0.4484136449500921], [0.68, 0.5066169923655895, -0.9048270524660198, -0.4584007599313564], [0.6900000000000001, 0.5015760690660555, -0.9297764858882515, -0.4663536349018799], [0.7000000000000001, 0.49658530379140947, -0.9510565162951535, -0.47228068906722837], [0.71, 0.4916441974609651, -0.968583161128631, -0.47619829092729044], [0.72, 0.4867522559599717, -0.9822872507286887, -0.47813053529290755], [0.73, 0.48190899009020244, -0.9921147013144778, -0.4781089937641028], [0.74, 0.4771139155210344, -0.9980267284282716, -0.47617244019506066], [0.75, 0.4723665527410147, -1.0, -0.4723665527410147], [0.76, 0.46766642700990924, -0.9980267284282716, -0.4667435941444388], [0.77, 0.46301306831122807, -0.9921147013144779, -0.459362071972294], [0.78, 0.4584060113052235, -0.9822872507286887, -0.4502863805625122], [0.79, 0.45384479528235583, -0.9685831611286311, -0.43958642647636065], [0.8, 0.44932896411722156, -0.9510565162951536, -0.4273372392838348], [0.81, 0.4448580662229411, -0.9297764858882512, -0.41361856953180914], [0.8200000000000001, 0.44043165450599925, -0.9048270524660196, -0.3985144757593956], [0.8300000000000001, 0.43604928632153556, -0.8763066800438634, -0.3821129024319208], [0.84, 0.43171052342907973, -0.8443279255020155, -0.36450525066426415], [0.85, 0.4274149319487267, -0.8090169943749476, -0.34578594359613163], [0.86, 0.4231620823177488, -0.7705132427757896, -0.32605198826640425], [0.87, 0.418951549247639, -0.7289686274214116, -0.3054025358111253], [0.88, 0.4147829116815814, -0.684547105928689, -0.28393844178030153], [0.89, 0.4106557527523455, -0.6374239897486896, -0.2617618283326515], [0.9, 0.4065696597405991, -0.5877852522924732, -0.23897565002509305], [0.91, 0.40252422403363597, -0.5358267949789963, -0.21568326486535064], [0.92, 0.39851904108451414, -0.4817536741017153, -0.19198801224195713], [0.93, 0.3945537103716011, -0.4257792915650722, -0.167992799286391], [0.9400000000000001, 0.3906278353585211, -0.3681245526846778, -0.14379969715753954], [0.9500000000000001, 0.3867410234545012, -0.3090169943749476, -0.11950954866940107], [0.96, 0.38289288597511206, -0.24868988716485535, -0.09522158860937645], [0.97, 0.37908303810339883, -0.18738131458572468, -0.07103307801696523], [0.98, 0.37531109885139957, -0.12533323356430467, -0.0470389536116183], [0.99, 0.3715766910220457, -0.06279051952931326, -0.02333149347425736], [1.0, 0.36787944117144233, -2.4492935982947064e-16, -9.010447602054478e-17], [1.01, 0.3642189795715233, 0.06279051952931276, 0.0228694989497321], [1.02, 0.3605949401730783, 0.12533323356430418, 0.045194529858818715], [1.03, 0.3570069605691474, 0.1873813145857242, 0.06689643358770064], [1.04, 0.35345468195878016, 0.2486898871648549, 0.08790060497421871], [1.05, 0.3499377491111553, 0.3090169943749472, 0.10813671144866356], [1.06, 0.3464558103300574, 0.36812455268467825, 0.1275388902027601], [1.07, 0.34300851741870664, 0.4257792915650726, 0.14604592354732276], [1.08, 0.3395955256449391, 0.4817536741017157, 0.16360139218795283], [1.09, 0.3362164937067333, 0.5358267949789967, 0.1801538062419549], [1.1, 0.33287108369807955, 0.5877852522924737, 0.19565671391234482], [1.11, 0.32955896107518906, 0.63742398974869, 0.21006878782598024], [1.12, 0.32627979462303947, 0.6845471059286893, 0.22335388913220877], [1.1300000000000001, 0.3230332564222529, 0.7289686274214118, 0.23548110954559864], [1.1400000000000001, 0.31981902181630384, 0.7705132427757893, 0.24642479160106115], [1.1500000000000001, 0.31663676937905316, 0.8090169943749478, 0.2561645274716351], [1.16, 0.3134861808826053, 0.8443279255020147, 0.2646851367781595], [1.17, 0.31036694126548503, 0.8763066800438631, 0.27197662389572586], [1.18, 0.30727873860113125, 0.9048270524660194, 0.278034115333938], [1.19, 0.3042212640667041, 0.9297764858882511, 0.2828577778364218], [1.2, 0.30119421191220214, 0.9510565162951534, 0.2864527179094832], [1.21, 0.2981972794298874, 0.968583161128631, 0.288828863550158], [1.22, 0.2952301669240142, 0.9822872507286886, 0.29000082899996177], [1.23, 0.2922925776808594, 0.9921147013144778, 0.28998776340228466], [1.24, 0.2893842179390506, 0.9980267284282716, 0.2888131842884846], [1.25, 0.2865047968601901, 1.0, 0.2865047968601901], [1.26, 0.2836540264997704, 0.9980267284282716, 0.28309430007307207], [1.27, 0.2808316217783798, 0.9921147013144779, 0.2786171805603177], [1.28, 0.27803730045319414, 0.9822872507286886, 0.27311249546219446], [1.29, 0.27527078308975234, 0.9685831611286311, 0.26662264525142604], [1.3, 0.2725317930340126, 0.9510565162951536, 0.2591931376625998], [1.31, 0.2698200563846868, 0.9297764858882517, 0.25087234384752405], [1.32, 0.26713530196585034, 0.9048270524660192, 0.24171124788738035], [1.33, 0.26447726129982396, 0.8763066800438635, 0.23176319079674212], [1.34, 0.261845668580326, 0.8443279255020151, 0.22108361015411482], [1.35, 0.2592402606458915, 0.8090169943749477, 0.20972977648871718], [1.36, 0.2566607769535559, 0.7705132427757886, 0.19776052754383772], [1.37, 0.25410695955280027, 0.728968627421411, 0.1852360015234328], [1.3800000000000001, 0.25157855305975646, 0.6845471059286884, 0.17221737041078325], [1.3900000000000001, 0.24907530463166816, 0.6374239897486896, 0.1587665744261882], [1.4000000000000001, 0.24659696394160643, 0.5877852522924734, 0.1449460586649751], [1.41, 0.2441432831534371, 0.5358267949789972, 0.130818512927756], [1.42, 0.24171401689703645, 0.48175367410171616, 0.1164466157220316], [1.43, 0.23930892224375455, 0.42577929156507394, 0.10189278337814718], [1.44, 0.23692775868212176, 0.368124552684678, 0.0872189251834394], [1.45, 0.23457028809379765, 0.3090169943749478, 0.07248620539641094], [1.46, 0.23223627472975883, 0.2486898871648555, 0.057754812958130106], [1.47, 0.22992548518672384, 0.18738131458572568, 0.04308373967104911], [1.48, 0.22763768838381274, 0.1253332335643039, 0.02853056756624663], [1.49, 0.22537265553943872, 0.06279051952931337, 0.014151266129022342], [1.5, 0.22313016014842982, 3.6739403974420594e-16, 8.197669092570326e-17], [1.51, 0.2209099779593782, -0.06279051952931265, -0.013871052285278363], [1.52, 0.21871188695221475, -0.12533323356430318, -0.027411868010671404], [1.53, 0.21653566731600707, -0.18738131458572496, -0.040574737996370604], [1.54, 0.21438110142697794, -0.24868988716485474, -0.05331441192415243], [1.55, 0.21224797382674304, -0.30901699437494706, -0.06558823093411256], [1.56, 0.21013607120076472, -0.36812455268467725, -0.07735624721369701], [1.57, 0.20804518235702046, -0.42577929156507327, -0.08858133035749866], [1.58, 0.20597509820488344, -0.4817536741017156, -0.09922926033366428], [1.59, 0.20392561173421342, -0.5358267949789967, -0.10926880694967485], [1.6, 0.20189651799465538, -0.5877852522924728, -0.1186717957664603], [1.61, 0.1998876140751445, -0.6374239897486905, -0.1274131604651251], [1.62, 0.19789869908361465, -0.6845471059286892, -0.13547098172474095], [1.6300000000000001, 0.19592957412690934, -0.7289686274214118, -0.14282651272255487], [1.6400000000000001, 0.19398004229089189, -0.7705132427757891, -0.14946419141933984], [1.6500000000000001, 0.19204990862075408, -0.8090169943749472, -0.15537163984234573], [1.6600000000000001, 0.1901389801015205, -0.8443279255020156, -0.16053965062618583], [1.67, 0.1882470656387468, -0.876306680043863, -0.16496216111788936], [1.68, 0.18637397603940997, -0.9048270524660189, -0.16863621539611176], [1.69, 0.18451952399298926, -0.9297764858882513, -0.17156191459597445], [1.7, 0.18268352405273466, -0.9510565162951534, -0.1737423559701157], [1.71, 0.1808657926171221, -0.968583161128631, -0.17518356115312753], [1.72, 0.17906614791149322, -0.9822872507286885, -0.17589439413055735], [1.73, 0.17728440996987782, -0.9921147013144779, -0.17588646944497877], [1.74, 0.17552040061699686, -0.9980267284282716, -0.17517405120020096], [1.75, 0.17377394345044514, -1.0, -0.17377394345044514], [1.76, 0.17204486382305054, -0.9980267284282716, -0.17170537258420662], [1.77, 0.17033298882540943, -0.992114701314478, -0.1689898623325234], [1.78, 0.1686381472685955, -0.9822872507286886, -0.16565110204844838], [1.79, 0.1669601696670407, -0.9685831611286312, -0.16171480891867487], [1.8, 0.16529888822158653, -0.9510565162951538, -0.1572085847794841], [1.81, 0.16365413680270405, -0.9297764858882517, -0.15216176821749336], [1.82, 0.16202575093388075, -0.9048270524660192, -0.14660528264109668], [1.83, 0.16041356777517274, -0.8763066800438635, -0.1405714810110529], [1.84, 0.15881742610692068, -0.8443279255020152, -0.13409398791842592], [1.85, 0.1572371663136276, -0.8090169943749477, -0.12720753969508478], [1.86, 0.1556726303679973, -0.7705132427757886, -0.11994782323628231], [1.87, 0.1541236618151314, -0.7289686274214111, -0.11235131420653809], [1.8800000000000001, 0.15259010575688386, -0.6845471059286885, -0.10445511528922737], [1.8900000000000001, 0.15107180883637084, -0.6374239897486897, -0.09629679512703086], [1.9000000000000001, 0.14956861922263504, -0.5877852522924735, -0.08791422858481343], [1.9100000000000001, 0.14808038659546244, -0.5358267949789958, -0.07934543894869729], [1.92, 0.14660696213035015, -0.48175367410171627, -0.07062844265518736], [1.93, 0.14514819848362373, -0.42577929156507405, -0.06180109712230407], [1.94, 0.14370394977770293, -0.3681245526846781, -0.05290095223093833], [1.95, 0.1422740715865136, -0.3090169943749479, -0.043965105979150605], [1.96, 0.140858420921045, -0.2486898871648556, -0.035030064805074417], [1.97, 0.13945685621505094, -0.18738131458572582, -0.026131609045568792], [1.98, 0.13806923731089282, -0.12533323356430404, -0.01730466396793145], [1.99, 0.13669542544552385, -0.0627905195293135, -0.008583176781004983]]}, \"id\": \"el6924497371024\"});\n",
" }(mpld3);\n",
"}else if(typeof define === \"function\" && define.amd){\n",
" // require.js is available: use it to load d3/mpld3\n",
" require.config({paths: {d3: \"https://mpld3.github.io/js/d3.v3.min\"}});\n",
" require([\"d3\"], function(d3){\n",
" window.d3 = d3;\n",
" mpld3_load_lib(\"https://mpld3.github.io/js/mpld3.v0.2.js\", function(){\n",
" \n",
" mpld3.draw_figure(\"fig_el69244973710246510545743\", {\"axes\": [{\"xlim\": [0.0, 2.0], \"yscale\": \"linear\", \"axesbg\": \"#FFFFFF\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#000000\", \"text\": \"time\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.5, -0.080645161290322578], \"rotation\": -0.0, \"id\": \"el6924497392400\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#000000\", \"text\": \"volts\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [-0.094842069892473138, 0.5], \"rotation\": -90.0, \"id\": \"el6924497411216\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#000000\", \"text\": \"Damped oscillation\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.5, 1.0224014336917562], \"rotation\": -0.0, \"id\": \"el6924497417104\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [0.0, 2.0], \"ylim\": [-1.0, 1.5], \"paths\": [], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"gridOn\": false}, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 5, \"tickvalues\": null}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"gridOn\": false}, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 6, \"tickvalues\": null}], \"lines\": [{\"color\": \"#0000FF\", \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"10,0\", \"zorder\": 2, \"alpha\": 1, \"xindex\": 0, \"linewidth\": 1.0, \"data\": \"data01\", \"id\": \"el6924497542992\"}, {\"color\": \"#007F00\", \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"6,6\", \"zorder\": 2, \"alpha\": 1, \"xindex\": 0, \"linewidth\": 1.0, \"data\": \"data01\", \"id\": \"el6924497380560\"}, {\"color\": \"#FF0000\", \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"4,4,2,4\", \"zorder\": 2, \"alpha\": 1, \"xindex\": 0, \"linewidth\": 1.0, \"data\": \"data01\", \"id\": \"el6924497551888\"}], \"markers\": [{\"edgecolor\": \"#000000\", \"facecolor\": \"#007F00\", \"edgewidth\": 0.5, \"yindex\": 2, \"coordinates\": \"data\", \"zorder\": 2, \"markerpath\": [[[0.0, 3.0], [0.7956093000000001, 3.0], [1.5587396123545605, 2.683901074764725], [2.121320343559643, 2.121320343559643], [2.683901074764725, 1.5587396123545605], [3.0, 0.7956093000000001], [3.0, 0.0], [3.0, -0.7956093000000001], [2.683901074764725, -1.5587396123545605], [2.121320343559643, -2.121320343559643], [1.5587396123545605, -2.683901074764725], [0.7956093000000001, -3.0], [0.0, -3.0], [-0.7956093000000001, -3.0], [-1.5587396123545605, -2.683901074764725], [-2.121320343559643, -2.121320343559643], [-2.683901074764725, -1.5587396123545605], [-3.0, -0.7956093000000001], [-3.0, 0.0], [-3.0, 0.7956093000000001], [-2.683901074764725, 1.5587396123545605], [-2.121320343559643, 2.121320343559643], [-1.5587396123545605, 2.683901074764725], [-0.7956093000000001, 3.0], [0.0, 3.0]], [\"M\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"Z\"]], \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el6924497380560pts\"}, {\"edgecolor\": \"#007F00\", \"facecolor\": \"#007F00\", \"edgewidth\": 0.5, \"yindex\": 1, \"coordinates\": \"data\", \"zorder\": 2, \"markerpath\": [[[0.0, 1.5], [0.39780465000000004, 1.5], [0.7793698061772802, 1.3419505373823626], [1.0606601717798214, 1.0606601717798214], [1.3419505373823626, 0.7793698061772802], [1.5, 0.39780465000000004], [1.5, 0.0], [1.5, -0.39780465000000004], [1.3419505373823626, -0.7793698061772802], [1.0606601717798214, -1.0606601717798214], [0.7793698061772802, -1.3419505373823626], [0.39780465000000004, -1.5], [0.0, -1.5], [-0.39780465000000004, -1.5], [-0.7793698061772802, -1.3419505373823626], [-1.0606601717798214, -1.0606601717798214], [-1.3419505373823626, -0.7793698061772802], [-1.5, -0.39780465000000004], [-1.5, 0.0], [-1.5, 0.39780465000000004], [-1.3419505373823626, 0.7793698061772802], [-1.0606601717798214, 1.0606601717798214], [-0.7793698061772802, 1.3419505373823626], [-0.39780465000000004, 1.5], [0.0, 1.5]], [\"M\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"Z\"]], \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el6924497553552pts\"}, {\"edgecolor\": \"#000000\", \"facecolor\": \"#FF0000\", \"edgewidth\": 0.5, \"yindex\": 3, \"coordinates\": \"data\", \"zorder\": 2, \"markerpath\": [[[-3.0, 3.0], [3.0, 3.0], [3.0, -3.0], [-3.0, -3.0]], [\"M\", \"L\", \"L\", \"L\", \"Z\"]], \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el6924497551888pts\"}], \"id\": \"el6924497370960\", \"ydomain\": [-1.0, 1.5], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.77500000000000002, 0.77500000000000002]}], \"height\": 320.0, \"width\": 480.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}], \"data\": {\"data02\": [[0.0, 0.0], [0.1, 0.09531017980432493], [0.2, 0.1823215567939546], [0.30000000000000004, 0.26236426446749106], [0.4, 0.33647223662121284], [0.5, 0.4054651081081644], [0.6000000000000001, 0.47000362924573563], [0.7000000000000001, 0.5306282510621705], [0.8, 0.5877866649021191], [0.9, 0.6418538861723947], [1.0, 0.6931471805599453], [1.1, 0.7419373447293773], [1.2000000000000002, 0.7884573603642703], [1.3, 0.8329091229351039], [1.4000000000000001, 0.8754687373539001], [1.5, 0.9162907318741551], [1.6, 0.9555114450274363], [1.7000000000000002, 0.9932517730102834], [1.8, 1.0296194171811581], [1.9000000000000001, 1.0647107369924285]], \"data01\": [[0.0, 1.0, 0.0, 0.0], [0.01, 0.9900498337491681, 0.06279051952931337, 0.062165743421020596], [0.02, 0.9801986733067553, 0.12533323356430426, 0.12285146926097672], [0.03, 0.9704455335485082, 0.1873813145857246, 0.18184335981016436], [0.04, 0.9607894391523232, 0.2486898871648548, 0.23893861721197537], [0.05, 0.951229424500714, 0.3090169943749474, 0.2939460577202216], [0.06, 0.9417645335842487, 0.3681245526846779, 0.3466866476599959], [0.07, 0.9323938199059483, 0.4257792915650727, 0.39699398009920667], [0.08, 0.9231163463866358, 0.4817536741017153, 0.4447146914951135], [0.09, 0.9139311852712282, 0.5358267949789967, 0.4897088178352378], [0.1, 0.9048374180359595, 0.5877852522924731, 0.5318500900439365], [0.11, 0.8958341352965282, 0.6374239897486896, 0.5710261686737804], [0.12, 0.8869204367171575, 0.6845471059286886, 0.6071388181437388], [0.13, 0.8780954309205613, 0.7289686274214116, 0.6401040210231744], [0.14, 0.8693582353988059, 0.7705132427757893, 0.6698520330909719], [0.15, 0.8607079764250578, 0.8090169943749473, 0.6963273801219433], [0.16, 0.8521437889662113, 0.8443279255020151, 0.7194887975672681], [0.17, 0.8436648165963837, 0.8763066800438637, 0.7393091145013921], [0.18, 0.835270211411272, 0.9048270524660196, 0.7557750834039303], [0.19, 0.8269591339433623, 0.9297764858882513, 0.7688871575310512], [0.2, 0.8187307530779818, 0.9510565162951535, 0.778659217806053], [0.21, 0.8105842459701871, 0.9685831611286311, 0.7851182513228716], [0.22, 0.8025187979624785, 0.9822872507286886, 0.788303983708655], [0.23, 0.794533602503334, 0.9921147013144779, 0.7882684677319114], [0.24, 0.7866278610665535, 0.9980267284282716, 0.7850756306707813], [0.25, 0.7788007830714049, 1.0, 0.7788007830714049], [0.26, 0.7710515858035663, 0.9980267284282716, 0.7695300916289639], [0.27, 0.7633794943368531, 0.9921147013144778, 0.7573600190136042], [0.28, 0.7557837414557255, 0.9822872507286886, 0.7423967335399866], [0.29, 0.7482635675785653, 0.9685831611286312, 0.7247554916426339], [0.3, 0.7408182206817179, 0.9510565162951536, 0.7045599961695289], [0.31, 0.7334469562242892, 0.9297764858882513, 0.6819417335436537], [0.32, 0.7261490370736909, 0.9048270524660195, 0.657039292866426], [0.33, 0.7189237334319262, 0.8763066800438635, 0.6299976700484707], [0.34, 0.7117703227626097, 0.844327925502015, 0.6009675600520539], [0.35000000000000003, 0.7046880897187134, 0.8090169943749475, 0.5701046403160569], [0.36, 0.697676326071031, 0.7705132427757893, 0.5375688484088891], [0.37, 0.6907343306373547, 0.7289686274214116, 0.5035236569175598], [0.38, 0.6838614092123558, 0.6845471059286888, 0.46813534853263294], [0.39, 0.6770568744981647, 0.6374239897486899, 0.4315722942293981], [0.4, 0.6703200460356393, 0.5877852522924732, 0.39400423737576057], [0.41000000000000003, 0.6636502501363194, 0.5358267949789967, 0.35560158651755347], [0.42, 0.6570468198150567, 0.4817536741017156, 0.3165347195027515], [0.43, 0.6505090947233165, 0.4257792915650729, 0.2769733015079306], [0.44, 0.6440364210831414, 0.36812455268467814, 0.23708561942387243], [0.45, 0.6376281516217733, 0.3090169943749475, 0.1970379349430137], [0.46, 0.631283645506926, 0.2486898871648548, 0.15699385857013562], [0.47000000000000003, 0.6250022682827008, 0.18738131458572455, 0.11711374664987216], [0.48, 0.6187833918061408, 0.12533323356430454, 0.07755412337095162], [0.49, 0.6126263941844161, 0.06279051952931358, 0.03846712956820954], [0.5, 0.6065306597126334, 1.2246467991473532e-16, 7.42785831001809e-17], [0.51, 0.6004955788122659, -0.06279051952931333, -0.03770542936867789], [0.52, 0.5945205479701944, -0.1253332335643043, -0.07451318269752656], [0.53, 0.5886049696783552, -0.18738131458572477, -0.11029357299002086], [0.54, 0.5827482523739896, -0.24868988716485502, -0.14492359712840394], [0.55, 0.5769498103804866, -0.30901699437494773, -0.178287296308974], [0.56, 0.5712090638488149, -0.36812455268467836, -0.21027608111877885], [0.5700000000000001, 0.5655254386995371, -0.4257792915650727, -0.24078902065151586], [0.58, 0.559898366565402, -0.481753674101715, -0.26973309521643124], [0.59, 0.5543272847345071, -0.5358267949789964, -0.2970234123487005], [0.6, 0.5488116360940265, -0.587785252292473, -0.32258338598257225], [0.61, 0.5433508690744998, -0.6374239897486896, -0.3463448787988856], [0.62, 0.5379444375946745, -0.6845471059286887, -0.3682483079058705], [0.63, 0.5325918010068972, -0.7289686274214113, -0.3882427141558953], [0.64, 0.5272924240430485, -0.7705132427757894, -0.4062857955405159], [0.65, 0.522045776761016, -0.8090169943749473, -0.4223439052413319], [0.66, 0.5168513344916992, -0.8443279255020153, -0.43639201504432457], [0.67, 0.5117085777865424, -0.8763066800438636, -0.4484136449500921], [0.68, 0.5066169923655895, -0.9048270524660198, -0.4584007599313564], [0.6900000000000001, 0.5015760690660555, -0.9297764858882515, -0.4663536349018799], [0.7000000000000001, 0.49658530379140947, -0.9510565162951535, -0.47228068906722837], [0.71, 0.4916441974609651, -0.968583161128631, -0.47619829092729044], [0.72, 0.4867522559599717, -0.9822872507286887, -0.47813053529290755], [0.73, 0.48190899009020244, -0.9921147013144778, -0.4781089937641028], [0.74, 0.4771139155210344, -0.9980267284282716, -0.47617244019506066], [0.75, 0.4723665527410147, -1.0, -0.4723665527410147], [0.76, 0.46766642700990924, -0.9980267284282716, -0.4667435941444388], [0.77, 0.46301306831122807, -0.9921147013144779, -0.459362071972294], [0.78, 0.4584060113052235, -0.9822872507286887, -0.4502863805625122], [0.79, 0.45384479528235583, -0.9685831611286311, -0.43958642647636065], [0.8, 0.44932896411722156, -0.9510565162951536, -0.4273372392838348], [0.81, 0.4448580662229411, -0.9297764858882512, -0.41361856953180914], [0.8200000000000001, 0.44043165450599925, -0.9048270524660196, -0.3985144757593956], [0.8300000000000001, 0.43604928632153556, -0.8763066800438634, -0.3821129024319208], [0.84, 0.43171052342907973, -0.8443279255020155, -0.36450525066426415], [0.85, 0.4274149319487267, -0.8090169943749476, -0.34578594359613163], [0.86, 0.4231620823177488, -0.7705132427757896, -0.32605198826640425], [0.87, 0.418951549247639, -0.7289686274214116, -0.3054025358111253], [0.88, 0.4147829116815814, -0.684547105928689, -0.28393844178030153], [0.89, 0.4106557527523455, -0.6374239897486896, -0.2617618283326515], [0.9, 0.4065696597405991, -0.5877852522924732, -0.23897565002509305], [0.91, 0.40252422403363597, -0.5358267949789963, -0.21568326486535064], [0.92, 0.39851904108451414, -0.4817536741017153, -0.19198801224195713], [0.93, 0.3945537103716011, -0.4257792915650722, -0.167992799286391], [0.9400000000000001, 0.3906278353585211, -0.3681245526846778, -0.14379969715753954], [0.9500000000000001, 0.3867410234545012, -0.3090169943749476, -0.11950954866940107], [0.96, 0.38289288597511206, -0.24868988716485535, -0.09522158860937645], [0.97, 0.37908303810339883, -0.18738131458572468, -0.07103307801696523], [0.98, 0.37531109885139957, -0.12533323356430467, -0.0470389536116183], [0.99, 0.3715766910220457, -0.06279051952931326, -0.02333149347425736], [1.0, 0.36787944117144233, -2.4492935982947064e-16, -9.010447602054478e-17], [1.01, 0.3642189795715233, 0.06279051952931276, 0.0228694989497321], [1.02, 0.3605949401730783, 0.12533323356430418, 0.045194529858818715], [1.03, 0.3570069605691474, 0.1873813145857242, 0.06689643358770064], [1.04, 0.35345468195878016, 0.2486898871648549, 0.08790060497421871], [1.05, 0.3499377491111553, 0.3090169943749472, 0.10813671144866356], [1.06, 0.3464558103300574, 0.36812455268467825, 0.1275388902027601], [1.07, 0.34300851741870664, 0.4257792915650726, 0.14604592354732276], [1.08, 0.3395955256449391, 0.4817536741017157, 0.16360139218795283], [1.09, 0.3362164937067333, 0.5358267949789967, 0.1801538062419549], [1.1, 0.33287108369807955, 0.5877852522924737, 0.19565671391234482], [1.11, 0.32955896107518906, 0.63742398974869, 0.21006878782598024], [1.12, 0.32627979462303947, 0.6845471059286893, 0.22335388913220877], [1.1300000000000001, 0.3230332564222529, 0.7289686274214118, 0.23548110954559864], [1.1400000000000001, 0.31981902181630384, 0.7705132427757893, 0.24642479160106115], [1.1500000000000001, 0.31663676937905316, 0.8090169943749478, 0.2561645274716351], [1.16, 0.3134861808826053, 0.8443279255020147, 0.2646851367781595], [1.17, 0.31036694126548503, 0.8763066800438631, 0.27197662389572586], [1.18, 0.30727873860113125, 0.9048270524660194, 0.278034115333938], [1.19, 0.3042212640667041, 0.9297764858882511, 0.2828577778364218], [1.2, 0.30119421191220214, 0.9510565162951534, 0.2864527179094832], [1.21, 0.2981972794298874, 0.968583161128631, 0.288828863550158], [1.22, 0.2952301669240142, 0.9822872507286886, 0.29000082899996177], [1.23, 0.2922925776808594, 0.9921147013144778, 0.28998776340228466], [1.24, 0.2893842179390506, 0.9980267284282716, 0.2888131842884846], [1.25, 0.2865047968601901, 1.0, 0.2865047968601901], [1.26, 0.2836540264997704, 0.9980267284282716, 0.28309430007307207], [1.27, 0.2808316217783798, 0.9921147013144779, 0.2786171805603177], [1.28, 0.27803730045319414, 0.9822872507286886, 0.27311249546219446], [1.29, 0.27527078308975234, 0.9685831611286311, 0.26662264525142604], [1.3, 0.2725317930340126, 0.9510565162951536, 0.2591931376625998], [1.31, 0.2698200563846868, 0.9297764858882517, 0.25087234384752405], [1.32, 0.26713530196585034, 0.9048270524660192, 0.24171124788738035], [1.33, 0.26447726129982396, 0.8763066800438635, 0.23176319079674212], [1.34, 0.261845668580326, 0.8443279255020151, 0.22108361015411482], [1.35, 0.2592402606458915, 0.8090169943749477, 0.20972977648871718], [1.36, 0.2566607769535559, 0.7705132427757886, 0.19776052754383772], [1.37, 0.25410695955280027, 0.728968627421411, 0.1852360015234328], [1.3800000000000001, 0.25157855305975646, 0.6845471059286884, 0.17221737041078325], [1.3900000000000001, 0.24907530463166816, 0.6374239897486896, 0.1587665744261882], [1.4000000000000001, 0.24659696394160643, 0.5877852522924734, 0.1449460586649751], [1.41, 0.2441432831534371, 0.5358267949789972, 0.130818512927756], [1.42, 0.24171401689703645, 0.48175367410171616, 0.1164466157220316], [1.43, 0.23930892224375455, 0.42577929156507394, 0.10189278337814718], [1.44, 0.23692775868212176, 0.368124552684678, 0.0872189251834394], [1.45, 0.23457028809379765, 0.3090169943749478, 0.07248620539641094], [1.46, 0.23223627472975883, 0.2486898871648555, 0.057754812958130106], [1.47, 0.22992548518672384, 0.18738131458572568, 0.04308373967104911], [1.48, 0.22763768838381274, 0.1253332335643039, 0.02853056756624663], [1.49, 0.22537265553943872, 0.06279051952931337, 0.014151266129022342], [1.5, 0.22313016014842982, 3.6739403974420594e-16, 8.197669092570326e-17], [1.51, 0.2209099779593782, -0.06279051952931265, -0.013871052285278363], [1.52, 0.21871188695221475, -0.12533323356430318, -0.027411868010671404], [1.53, 0.21653566731600707, -0.18738131458572496, -0.040574737996370604], [1.54, 0.21438110142697794, -0.24868988716485474, -0.05331441192415243], [1.55, 0.21224797382674304, -0.30901699437494706, -0.06558823093411256], [1.56, 0.21013607120076472, -0.36812455268467725, -0.07735624721369701], [1.57, 0.20804518235702046, -0.42577929156507327, -0.08858133035749866], [1.58, 0.20597509820488344, -0.4817536741017156, -0.09922926033366428], [1.59, 0.20392561173421342, -0.5358267949789967, -0.10926880694967485], [1.6, 0.20189651799465538, -0.5877852522924728, -0.1186717957664603], [1.61, 0.1998876140751445, -0.6374239897486905, -0.1274131604651251], [1.62, 0.19789869908361465, -0.6845471059286892, -0.13547098172474095], [1.6300000000000001, 0.19592957412690934, -0.7289686274214118, -0.14282651272255487], [1.6400000000000001, 0.19398004229089189, -0.7705132427757891, -0.14946419141933984], [1.6500000000000001, 0.19204990862075408, -0.8090169943749472, -0.15537163984234573], [1.6600000000000001, 0.1901389801015205, -0.8443279255020156, -0.16053965062618583], [1.67, 0.1882470656387468, -0.876306680043863, -0.16496216111788936], [1.68, 0.18637397603940997, -0.9048270524660189, -0.16863621539611176], [1.69, 0.18451952399298926, -0.9297764858882513, -0.17156191459597445], [1.7, 0.18268352405273466, -0.9510565162951534, -0.1737423559701157], [1.71, 0.1808657926171221, -0.968583161128631, -0.17518356115312753], [1.72, 0.17906614791149322, -0.9822872507286885, -0.17589439413055735], [1.73, 0.17728440996987782, -0.9921147013144779, -0.17588646944497877], [1.74, 0.17552040061699686, -0.9980267284282716, -0.17517405120020096], [1.75, 0.17377394345044514, -1.0, -0.17377394345044514], [1.76, 0.17204486382305054, -0.9980267284282716, -0.17170537258420662], [1.77, 0.17033298882540943, -0.992114701314478, -0.1689898623325234], [1.78, 0.1686381472685955, -0.9822872507286886, -0.16565110204844838], [1.79, 0.1669601696670407, -0.9685831611286312, -0.16171480891867487], [1.8, 0.16529888822158653, -0.9510565162951538, -0.1572085847794841], [1.81, 0.16365413680270405, -0.9297764858882517, -0.15216176821749336], [1.82, 0.16202575093388075, -0.9048270524660192, -0.14660528264109668], [1.83, 0.16041356777517274, -0.8763066800438635, -0.1405714810110529], [1.84, 0.15881742610692068, -0.8443279255020152, -0.13409398791842592], [1.85, 0.1572371663136276, -0.8090169943749477, -0.12720753969508478], [1.86, 0.1556726303679973, -0.7705132427757886, -0.11994782323628231], [1.87, 0.1541236618151314, -0.7289686274214111, -0.11235131420653809], [1.8800000000000001, 0.15259010575688386, -0.6845471059286885, -0.10445511528922737], [1.8900000000000001, 0.15107180883637084, -0.6374239897486897, -0.09629679512703086], [1.9000000000000001, 0.14956861922263504, -0.5877852522924735, -0.08791422858481343], [1.9100000000000001, 0.14808038659546244, -0.5358267949789958, -0.07934543894869729], [1.92, 0.14660696213035015, -0.48175367410171627, -0.07062844265518736], [1.93, 0.14514819848362373, -0.42577929156507405, -0.06180109712230407], [1.94, 0.14370394977770293, -0.3681245526846781, -0.05290095223093833], [1.95, 0.1422740715865136, -0.3090169943749479, -0.043965105979150605], [1.96, 0.140858420921045, -0.2486898871648556, -0.035030064805074417], [1.97, 0.13945685621505094, -0.18738131458572582, -0.026131609045568792], [1.98, 0.13806923731089282, -0.12533323356430404, -0.01730466396793145], [1.99, 0.13669542544552385, -0.0627905195293135, -0.008583176781004983]]}, \"id\": \"el6924497371024\"});\n",
" });\n",
" });\n",
"}else{\n",
" // require.js not available: dynamically load d3 & mpld3\n",
" mpld3_load_lib(\"https://mpld3.github.io/js/d3.v3.min.js\", function(){\n",
" mpld3_load_lib(\"https://mpld3.github.io/js/mpld3.v0.2.js\", function(){\n",
" \n",
" mpld3.draw_figure(\"fig_el69244973710246510545743\", {\"axes\": [{\"xlim\": [0.0, 2.0], \"yscale\": \"linear\", \"axesbg\": \"#FFFFFF\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#000000\", \"text\": \"time\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.5, -0.080645161290322578], \"rotation\": -0.0, \"id\": \"el6924497392400\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#000000\", \"text\": \"volts\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [-0.094842069892473138, 0.5], \"rotation\": -90.0, \"id\": \"el6924497411216\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#000000\", \"text\": \"Damped oscillation\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.5, 1.0224014336917562], \"rotation\": -0.0, \"id\": \"el6924497417104\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [0.0, 2.0], \"ylim\": [-1.0, 1.5], \"paths\": [], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"gridOn\": false}, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 5, \"tickvalues\": null}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"gridOn\": false}, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 6, \"tickvalues\": null}], \"lines\": [{\"color\": \"#0000FF\", \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"10,0\", \"zorder\": 2, \"alpha\": 1, \"xindex\": 0, \"linewidth\": 1.0, \"data\": \"data01\", \"id\": \"el6924497542992\"}, {\"color\": \"#007F00\", \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"6,6\", \"zorder\": 2, \"alpha\": 1, \"xindex\": 0, \"linewidth\": 1.0, \"data\": \"data01\", \"id\": \"el6924497380560\"}, {\"color\": \"#FF0000\", \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"4,4,2,4\", \"zorder\": 2, \"alpha\": 1, \"xindex\": 0, \"linewidth\": 1.0, \"data\": \"data01\", \"id\": \"el6924497551888\"}], \"markers\": [{\"edgecolor\": \"#000000\", \"facecolor\": \"#007F00\", \"edgewidth\": 0.5, \"yindex\": 2, \"coordinates\": \"data\", \"zorder\": 2, \"markerpath\": [[[0.0, 3.0], [0.7956093000000001, 3.0], [1.5587396123545605, 2.683901074764725], [2.121320343559643, 2.121320343559643], [2.683901074764725, 1.5587396123545605], [3.0, 0.7956093000000001], [3.0, 0.0], [3.0, -0.7956093000000001], [2.683901074764725, -1.5587396123545605], [2.121320343559643, -2.121320343559643], [1.5587396123545605, -2.683901074764725], [0.7956093000000001, -3.0], [0.0, -3.0], [-0.7956093000000001, -3.0], [-1.5587396123545605, -2.683901074764725], [-2.121320343559643, -2.121320343559643], [-2.683901074764725, -1.5587396123545605], [-3.0, -0.7956093000000001], [-3.0, 0.0], [-3.0, 0.7956093000000001], [-2.683901074764725, 1.5587396123545605], [-2.121320343559643, 2.121320343559643], [-1.5587396123545605, 2.683901074764725], [-0.7956093000000001, 3.0], [0.0, 3.0]], [\"M\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"Z\"]], \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el6924497380560pts\"}, {\"edgecolor\": \"#007F00\", \"facecolor\": \"#007F00\", \"edgewidth\": 0.5, \"yindex\": 1, \"coordinates\": \"data\", \"zorder\": 2, \"markerpath\": [[[0.0, 1.5], [0.39780465000000004, 1.5], [0.7793698061772802, 1.3419505373823626], [1.0606601717798214, 1.0606601717798214], [1.3419505373823626, 0.7793698061772802], [1.5, 0.39780465000000004], [1.5, 0.0], [1.5, -0.39780465000000004], [1.3419505373823626, -0.7793698061772802], [1.0606601717798214, -1.0606601717798214], [0.7793698061772802, -1.3419505373823626], [0.39780465000000004, -1.5], [0.0, -1.5], [-0.39780465000000004, -1.5], [-0.7793698061772802, -1.3419505373823626], [-1.0606601717798214, -1.0606601717798214], [-1.3419505373823626, -0.7793698061772802], [-1.5, -0.39780465000000004], [-1.5, 0.0], [-1.5, 0.39780465000000004], [-1.3419505373823626, 0.7793698061772802], [-1.0606601717798214, 1.0606601717798214], [-0.7793698061772802, 1.3419505373823626], [-0.39780465000000004, 1.5], [0.0, 1.5]], [\"M\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"C\", \"Z\"]], \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el6924497553552pts\"}, {\"edgecolor\": \"#000000\", \"facecolor\": \"#FF0000\", \"edgewidth\": 0.5, \"yindex\": 3, \"coordinates\": \"data\", \"zorder\": 2, \"markerpath\": [[[-3.0, 3.0], [3.0, 3.0], [3.0, -3.0], [-3.0, -3.0]], [\"M\", \"L\", \"L\", \"L\", \"Z\"]], \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el6924497551888pts\"}], \"id\": \"el6924497370960\", \"ydomain\": [-1.0, 1.5], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.77500000000000002, 0.77500000000000002]}], \"height\": 320.0, \"width\": 480.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}], \"data\": {\"data02\": [[0.0, 0.0], [0.1, 0.09531017980432493], [0.2, 0.1823215567939546], [0.30000000000000004, 0.26236426446749106], [0.4, 0.33647223662121284], [0.5, 0.4054651081081644], [0.6000000000000001, 0.47000362924573563], [0.7000000000000001, 0.5306282510621705], [0.8, 0.5877866649021191], [0.9, 0.6418538861723947], [1.0, 0.6931471805599453], [1.1, 0.7419373447293773], [1.2000000000000002, 0.7884573603642703], [1.3, 0.8329091229351039], [1.4000000000000001, 0.8754687373539001], [1.5, 0.9162907318741551], [1.6, 0.9555114450274363], [1.7000000000000002, 0.9932517730102834], [1.8, 1.0296194171811581], [1.9000000000000001, 1.0647107369924285]], \"data01\": [[0.0, 1.0, 0.0, 0.0], [0.01, 0.9900498337491681, 0.06279051952931337, 0.062165743421020596], [0.02, 0.9801986733067553, 0.12533323356430426, 0.12285146926097672], [0.03, 0.9704455335485082, 0.1873813145857246, 0.18184335981016436], [0.04, 0.9607894391523232, 0.2486898871648548, 0.23893861721197537], [0.05, 0.951229424500714, 0.3090169943749474, 0.2939460577202216], [0.06, 0.9417645335842487, 0.3681245526846779, 0.3466866476599959], [0.07, 0.9323938199059483, 0.4257792915650727, 0.39699398009920667], [0.08, 0.9231163463866358, 0.4817536741017153, 0.4447146914951135], [0.09, 0.9139311852712282, 0.5358267949789967, 0.4897088178352378], [0.1, 0.9048374180359595, 0.5877852522924731, 0.5318500900439365], [0.11, 0.8958341352965282, 0.6374239897486896, 0.5710261686737804], [0.12, 0.8869204367171575, 0.6845471059286886, 0.6071388181437388], [0.13, 0.8780954309205613, 0.7289686274214116, 0.6401040210231744], [0.14, 0.8693582353988059, 0.7705132427757893, 0.6698520330909719], [0.15, 0.8607079764250578, 0.8090169943749473, 0.6963273801219433], [0.16, 0.8521437889662113, 0.8443279255020151, 0.7194887975672681], [0.17, 0.8436648165963837, 0.8763066800438637, 0.7393091145013921], [0.18, 0.835270211411272, 0.9048270524660196, 0.7557750834039303], [0.19, 0.8269591339433623, 0.9297764858882513, 0.7688871575310512], [0.2, 0.8187307530779818, 0.9510565162951535, 0.778659217806053], [0.21, 0.8105842459701871, 0.9685831611286311, 0.7851182513228716], [0.22, 0.8025187979624785, 0.9822872507286886, 0.788303983708655], [0.23, 0.794533602503334, 0.9921147013144779, 0.7882684677319114], [0.24, 0.7866278610665535, 0.9980267284282716, 0.7850756306707813], [0.25, 0.7788007830714049, 1.0, 0.7788007830714049], [0.26, 0.7710515858035663, 0.9980267284282716, 0.7695300916289639], [0.27, 0.7633794943368531, 0.9921147013144778, 0.7573600190136042], [0.28, 0.7557837414557255, 0.9822872507286886, 0.7423967335399866], [0.29, 0.7482635675785653, 0.9685831611286312, 0.7247554916426339], [0.3, 0.7408182206817179, 0.9510565162951536, 0.7045599961695289], [0.31, 0.7334469562242892, 0.9297764858882513, 0.6819417335436537], [0.32, 0.7261490370736909, 0.9048270524660195, 0.657039292866426], [0.33, 0.7189237334319262, 0.8763066800438635, 0.6299976700484707], [0.34, 0.7117703227626097, 0.844327925502015, 0.6009675600520539], [0.35000000000000003, 0.7046880897187134, 0.8090169943749475, 0.5701046403160569], [0.36, 0.697676326071031, 0.7705132427757893, 0.5375688484088891], [0.37, 0.6907343306373547, 0.7289686274214116, 0.5035236569175598], [0.38, 0.6838614092123558, 0.6845471059286888, 0.46813534853263294], [0.39, 0.6770568744981647, 0.6374239897486899, 0.4315722942293981], [0.4, 0.6703200460356393, 0.5877852522924732, 0.39400423737576057], [0.41000000000000003, 0.6636502501363194, 0.5358267949789967, 0.35560158651755347], [0.42, 0.6570468198150567, 0.4817536741017156, 0.3165347195027515], [0.43, 0.6505090947233165, 0.4257792915650729, 0.2769733015079306], [0.44, 0.6440364210831414, 0.36812455268467814, 0.23708561942387243], [0.45, 0.6376281516217733, 0.3090169943749475, 0.1970379349430137], [0.46, 0.631283645506926, 0.2486898871648548, 0.15699385857013562], [0.47000000000000003, 0.6250022682827008, 0.18738131458572455, 0.11711374664987216], [0.48, 0.6187833918061408, 0.12533323356430454, 0.07755412337095162], [0.49, 0.6126263941844161, 0.06279051952931358, 0.03846712956820954], [0.5, 0.6065306597126334, 1.2246467991473532e-16, 7.42785831001809e-17], [0.51, 0.6004955788122659, -0.06279051952931333, -0.03770542936867789], [0.52, 0.5945205479701944, -0.1253332335643043, -0.07451318269752656], [0.53, 0.5886049696783552, -0.18738131458572477, -0.11029357299002086], [0.54, 0.5827482523739896, -0.24868988716485502, -0.14492359712840394], [0.55, 0.5769498103804866, -0.30901699437494773, -0.178287296308974], [0.56, 0.5712090638488149, -0.36812455268467836, -0.21027608111877885], [0.5700000000000001, 0.5655254386995371, -0.4257792915650727, -0.24078902065151586], [0.58, 0.559898366565402, -0.481753674101715, -0.26973309521643124], [0.59, 0.5543272847345071, -0.5358267949789964, -0.2970234123487005], [0.6, 0.5488116360940265, -0.587785252292473, -0.32258338598257225], [0.61, 0.5433508690744998, -0.6374239897486896, -0.3463448787988856], [0.62, 0.5379444375946745, -0.6845471059286887, -0.3682483079058705], [0.63, 0.5325918010068972, -0.7289686274214113, -0.3882427141558953], [0.64, 0.5272924240430485, -0.7705132427757894, -0.4062857955405159], [0.65, 0.522045776761016, -0.8090169943749473, -0.4223439052413319], [0.66, 0.5168513344916992, -0.8443279255020153, -0.43639201504432457], [0.67, 0.5117085777865424, -0.8763066800438636, -0.4484136449500921], [0.68, 0.5066169923655895, -0.9048270524660198, -0.4584007599313564], [0.6900000000000001, 0.5015760690660555, -0.9297764858882515, -0.4663536349018799], [0.7000000000000001, 0.49658530379140947, -0.9510565162951535, -0.47228068906722837], [0.71, 0.4916441974609651, -0.968583161128631, -0.47619829092729044], [0.72, 0.4867522559599717, -0.9822872507286887, -0.47813053529290755], [0.73, 0.48190899009020244, -0.9921147013144778, -0.4781089937641028], [0.74, 0.4771139155210344, -0.9980267284282716, -0.47617244019506066], [0.75, 0.4723665527410147, -1.0, -0.4723665527410147], [0.76, 0.46766642700990924, -0.9980267284282716, -0.4667435941444388], [0.77, 0.46301306831122807, -0.9921147013144779, -0.459362071972294], [0.78, 0.4584060113052235, -0.9822872507286887, -0.4502863805625122], [0.79, 0.45384479528235583, -0.9685831611286311, -0.43958642647636065], [0.8, 0.44932896411722156, -0.9510565162951536, -0.4273372392838348], [0.81, 0.4448580662229411, -0.9297764858882512, -0.41361856953180914], [0.8200000000000001, 0.44043165450599925, -0.9048270524660196, -0.3985144757593956], [0.8300000000000001, 0.43604928632153556, -0.8763066800438634, -0.3821129024319208], [0.84, 0.43171052342907973, -0.8443279255020155, -0.36450525066426415], [0.85, 0.4274149319487267, -0.8090169943749476, -0.34578594359613163], [0.86, 0.4231620823177488, -0.7705132427757896, -0.32605198826640425], [0.87, 0.418951549247639, -0.7289686274214116, -0.3054025358111253], [0.88, 0.4147829116815814, -0.684547105928689, -0.28393844178030153], [0.89, 0.4106557527523455, -0.6374239897486896, -0.2617618283326515], [0.9, 0.4065696597405991, -0.5877852522924732, -0.23897565002509305], [0.91, 0.40252422403363597, -0.5358267949789963, -0.21568326486535064], [0.92, 0.39851904108451414, -0.4817536741017153, -0.19198801224195713], [0.93, 0.3945537103716011, -0.4257792915650722, -0.167992799286391], [0.9400000000000001, 0.3906278353585211, -0.3681245526846778, -0.14379969715753954], [0.9500000000000001, 0.3867410234545012, -0.3090169943749476, -0.11950954866940107], [0.96, 0.38289288597511206, -0.24868988716485535, -0.09522158860937645], [0.97, 0.37908303810339883, -0.18738131458572468, -0.07103307801696523], [0.98, 0.37531109885139957, -0.12533323356430467, -0.0470389536116183], [0.99, 0.3715766910220457, -0.06279051952931326, -0.02333149347425736], [1.0, 0.36787944117144233, -2.4492935982947064e-16, -9.010447602054478e-17], [1.01, 0.3642189795715233, 0.06279051952931276, 0.0228694989497321], [1.02, 0.3605949401730783, 0.12533323356430418, 0.045194529858818715], [1.03, 0.3570069605691474, 0.1873813145857242, 0.06689643358770064], [1.04, 0.35345468195878016, 0.2486898871648549, 0.08790060497421871], [1.05, 0.3499377491111553, 0.3090169943749472, 0.10813671144866356], [1.06, 0.3464558103300574, 0.36812455268467825, 0.1275388902027601], [1.07, 0.34300851741870664, 0.4257792915650726, 0.14604592354732276], [1.08, 0.3395955256449391, 0.4817536741017157, 0.16360139218795283], [1.09, 0.3362164937067333, 0.5358267949789967, 0.1801538062419549], [1.1, 0.33287108369807955, 0.5877852522924737, 0.19565671391234482], [1.11, 0.32955896107518906, 0.63742398974869, 0.21006878782598024], [1.12, 0.32627979462303947, 0.6845471059286893, 0.22335388913220877], [1.1300000000000001, 0.3230332564222529, 0.7289686274214118, 0.23548110954559864], [1.1400000000000001, 0.31981902181630384, 0.7705132427757893, 0.24642479160106115], [1.1500000000000001, 0.31663676937905316, 0.8090169943749478, 0.2561645274716351], [1.16, 0.3134861808826053, 0.8443279255020147, 0.2646851367781595], [1.17, 0.31036694126548503, 0.8763066800438631, 0.27197662389572586], [1.18, 0.30727873860113125, 0.9048270524660194, 0.278034115333938], [1.19, 0.3042212640667041, 0.9297764858882511, 0.2828577778364218], [1.2, 0.30119421191220214, 0.9510565162951534, 0.2864527179094832], [1.21, 0.2981972794298874, 0.968583161128631, 0.288828863550158], [1.22, 0.2952301669240142, 0.9822872507286886, 0.29000082899996177], [1.23, 0.2922925776808594, 0.9921147013144778, 0.28998776340228466], [1.24, 0.2893842179390506, 0.9980267284282716, 0.2888131842884846], [1.25, 0.2865047968601901, 1.0, 0.2865047968601901], [1.26, 0.2836540264997704, 0.9980267284282716, 0.28309430007307207], [1.27, 0.2808316217783798, 0.9921147013144779, 0.2786171805603177], [1.28, 0.27803730045319414, 0.9822872507286886, 0.27311249546219446], [1.29, 0.27527078308975234, 0.9685831611286311, 0.26662264525142604], [1.3, 0.2725317930340126, 0.9510565162951536, 0.2591931376625998], [1.31, 0.2698200563846868, 0.9297764858882517, 0.25087234384752405], [1.32, 0.26713530196585034, 0.9048270524660192, 0.24171124788738035], [1.33, 0.26447726129982396, 0.8763066800438635, 0.23176319079674212], [1.34, 0.261845668580326, 0.8443279255020151, 0.22108361015411482], [1.35, 0.2592402606458915, 0.8090169943749477, 0.20972977648871718], [1.36, 0.2566607769535559, 0.7705132427757886, 0.19776052754383772], [1.37, 0.25410695955280027, 0.728968627421411, 0.1852360015234328], [1.3800000000000001, 0.25157855305975646, 0.6845471059286884, 0.17221737041078325], [1.3900000000000001, 0.24907530463166816, 0.6374239897486896, 0.1587665744261882], [1.4000000000000001, 0.24659696394160643, 0.5877852522924734, 0.1449460586649751], [1.41, 0.2441432831534371, 0.5358267949789972, 0.130818512927756], [1.42, 0.24171401689703645, 0.48175367410171616, 0.1164466157220316], [1.43, 0.23930892224375455, 0.42577929156507394, 0.10189278337814718], [1.44, 0.23692775868212176, 0.368124552684678, 0.0872189251834394], [1.45, 0.23457028809379765, 0.3090169943749478, 0.07248620539641094], [1.46, 0.23223627472975883, 0.2486898871648555, 0.057754812958130106], [1.47, 0.22992548518672384, 0.18738131458572568, 0.04308373967104911], [1.48, 0.22763768838381274, 0.1253332335643039, 0.02853056756624663], [1.49, 0.22537265553943872, 0.06279051952931337, 0.014151266129022342], [1.5, 0.22313016014842982, 3.6739403974420594e-16, 8.197669092570326e-17], [1.51, 0.2209099779593782, -0.06279051952931265, -0.013871052285278363], [1.52, 0.21871188695221475, -0.12533323356430318, -0.027411868010671404], [1.53, 0.21653566731600707, -0.18738131458572496, -0.040574737996370604], [1.54, 0.21438110142697794, -0.24868988716485474, -0.05331441192415243], [1.55, 0.21224797382674304, -0.30901699437494706, -0.06558823093411256], [1.56, 0.21013607120076472, -0.36812455268467725, -0.07735624721369701], [1.57, 0.20804518235702046, -0.42577929156507327, -0.08858133035749866], [1.58, 0.20597509820488344, -0.4817536741017156, -0.09922926033366428], [1.59, 0.20392561173421342, -0.5358267949789967, -0.10926880694967485], [1.6, 0.20189651799465538, -0.5877852522924728, -0.1186717957664603], [1.61, 0.1998876140751445, -0.6374239897486905, -0.1274131604651251], [1.62, 0.19789869908361465, -0.6845471059286892, -0.13547098172474095], [1.6300000000000001, 0.19592957412690934, -0.7289686274214118, -0.14282651272255487], [1.6400000000000001, 0.19398004229089189, -0.7705132427757891, -0.14946419141933984], [1.6500000000000001, 0.19204990862075408, -0.8090169943749472, -0.15537163984234573], [1.6600000000000001, 0.1901389801015205, -0.8443279255020156, -0.16053965062618583], [1.67, 0.1882470656387468, -0.876306680043863, -0.16496216111788936], [1.68, 0.18637397603940997, -0.9048270524660189, -0.16863621539611176], [1.69, 0.18451952399298926, -0.9297764858882513, -0.17156191459597445], [1.7, 0.18268352405273466, -0.9510565162951534, -0.1737423559701157], [1.71, 0.1808657926171221, -0.968583161128631, -0.17518356115312753], [1.72, 0.17906614791149322, -0.9822872507286885, -0.17589439413055735], [1.73, 0.17728440996987782, -0.9921147013144779, -0.17588646944497877], [1.74, 0.17552040061699686, -0.9980267284282716, -0.17517405120020096], [1.75, 0.17377394345044514, -1.0, -0.17377394345044514], [1.76, 0.17204486382305054, -0.9980267284282716, -0.17170537258420662], [1.77, 0.17033298882540943, -0.992114701314478, -0.1689898623325234], [1.78, 0.1686381472685955, -0.9822872507286886, -0.16565110204844838], [1.79, 0.1669601696670407, -0.9685831611286312, -0.16171480891867487], [1.8, 0.16529888822158653, -0.9510565162951538, -0.1572085847794841], [1.81, 0.16365413680270405, -0.9297764858882517, -0.15216176821749336], [1.82, 0.16202575093388075, -0.9048270524660192, -0.14660528264109668], [1.83, 0.16041356777517274, -0.8763066800438635, -0.1405714810110529], [1.84, 0.15881742610692068, -0.8443279255020152, -0.13409398791842592], [1.85, 0.1572371663136276, -0.8090169943749477, -0.12720753969508478], [1.86, 0.1556726303679973, -0.7705132427757886, -0.11994782323628231], [1.87, 0.1541236618151314, -0.7289686274214111, -0.11235131420653809], [1.8800000000000001, 0.15259010575688386, -0.6845471059286885, -0.10445511528922737], [1.8900000000000001, 0.15107180883637084, -0.6374239897486897, -0.09629679512703086], [1.9000000000000001, 0.14956861922263504, -0.5877852522924735, -0.08791422858481343], [1.9100000000000001, 0.14808038659546244, -0.5358267949789958, -0.07934543894869729], [1.92, 0.14660696213035015, -0.48175367410171627, -0.07062844265518736], [1.93, 0.14514819848362373, -0.42577929156507405, -0.06180109712230407], [1.94, 0.14370394977770293, -0.3681245526846781, -0.05290095223093833], [1.95, 0.1422740715865136, -0.3090169943749479, -0.043965105979150605], [1.96, 0.140858420921045, -0.2486898871648556, -0.035030064805074417], [1.97, 0.13945685621505094, -0.18738131458572582, -0.026131609045568792], [1.98, 0.13806923731089282, -0.12533323356430404, -0.01730466396793145], [1.99, 0.13669542544552385, -0.0627905195293135, -0.008583176781004983]]}, \"id\": \"el6924497371024\"});\n",
" })\n",
" });\n",
"}\n",
"</script>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import mpld3\n",
"mpld3.display(fig1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can make [interactive plots](https://plot.ly/pandas/) from the same dataframe we made with pandas above."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"volts_histogram_plot = [{'x': df['volts_1'], \n",
" 'type': 'histogram'\n",
"}]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data_histogram = Data(volts_histogram_plot)\n",
"\n",
"fig_histogram = Figure(data=data_histogram)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/20412.embed\" height=\"525\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"py.iplot(fig_histogram, filename='pandas/volts_histogram')"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"volts_jitter_plot = [{'y': df['volts_1'], \n",
" 'name': 'volts',\n",
" 'type': 'box',\n",
"}]"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"data_jitter = Data(volts_jitter_plot)\n",
"\n",
"fig_jitter = Figure(data=data_jitter)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/20414.embed\" height=\"525\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"py.iplot(fig_jitter, filename='pandas/volts_boxplot')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For plotting directly from a dataframe, you can use [cufflinks](https://plot.ly/ipython-notebooks/cufflinks/), a pandas plotting library. Click the legend items to toggle traces on and off."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import cufflinks as cf"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/20362.embed\" height=\"525\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas.io.data as web\n",
"from datetime import datetime\n",
"\n",
"start = datetime(2008, 1, 1)\n",
"end = datetime(2008, 11, 28)\n",
"df_gis = web.DataReader(\"GIS\", 'yahoo', start, end)\n",
"df_fdo = web.DataReader(\"FDO\", 'yahoo', start, end)\n",
"df_sp = web.DataReader(\"GSPC\", 'yahoo', start, end)\n",
"\n",
"df = pd.DataFrame({'General Mills': df_gis.Open, 'Family Dollar Stores': df_fdo.Open, 'S&P 500': df_sp.Open})\n",
"df.head()\n",
"\n",
"df.iplot(kind='line', fill=True,\n",
" yTitle='Open Price', title='Top Recession Stocks',\n",
" filename='cufflinks/stock data')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Interactive maps"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's make a map. We'll read in the data from another Plotly graph showing the number of electoral votes per state in the U.S. As before, if we add .csv to the end of the plot URL, we can use pandas to make a dataframe."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Learn about API authentication here: https://plot.ly/python/getting-started\n",
"# Find your api_key here: https://plot.ly/settings/api\n",
"\n",
"import plotly.plotly as py\n",
"import pandas as pd\n",
"\n",
"df = pd.read_csv('https://plot.ly/~Dreamshot/5718/electoral-college-votes-by-us-state/.csv')\n",
"\n",
"for col in df.columns:\n",
" df[col] = df[col].astype(str)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>y</th>\n",
" <th>Source: &lt;a href=\"https://en.wikipedia.org/wiki/Electoral_College_%28United_States%29\"&gt;Wikipedia&lt;/a&gt;</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> DE</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> VT</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> ND</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> SD</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> MT</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" y \\\n",
"0 DE \n",
"1 VT \n",
"2 ND \n",
"3 SD \n",
"4 MT \n",
"\n",
" Source: <a href=\"https://en.wikipedia.org/wiki/Electoral_College_%28United_States%29\">Wikipedia</a> \n",
"0 3 \n",
"1 3 \n",
"2 3 \n",
"3 3 \n",
"4 3 "
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df.columns = [\"state\", \"votes\"] # change column names"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>state</th>\n",
" <th>votes</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> DE</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" state votes\n",
"0 DE 3"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can make an interactive D3.js graph directly from pandas. See the [pandas maps](https://plot.ly/pandas/#maps) documentation to learn more."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/20380.embed\" height=\"525\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scl = [[0.0, 'rgb(242,240,247)'],[0.2, 'rgb(218,218,235)'],[0.4, 'rgb(188,189,220)'],\\\n",
" [0.6, 'rgb(158,154,200)'],[0.8, 'rgb(117,107,177)'],[1.0, 'rgb(84,39,143)']]\n",
"\n",
"df['text'] = df['state'] \n",
" \n",
"data = [ dict(\n",
" type='choropleth',\n",
" colorscale = scl,\n",
" autocolorscale = False,\n",
" locations = df['state'],\n",
" z = df['votes'].astype(float),\n",
" locationmode = 'USA-states',\n",
" text = df['text'],\n",
" hoverinfo = 'location+z',\n",
" marker = dict(\n",
" line = dict (\n",
" color = 'rgb(255,255,255)',\n",
" width = 2\n",
" )\n",
" ),\n",
" colorbar = dict(\n",
" title = \"Votes\"\n",
" )\n",
" ) ]\n",
"\n",
"layout = dict(\n",
" title = '2016 Electoral College Votes<br>(Hover for breakdown)',\n",
" geo = dict(\n",
" scope='usa',\n",
" projection=dict( type='albers usa' ),\n",
" showlakes = True,\n",
" lakecolor = 'rgb(255, 255, 255)',\n",
" ),\n",
" )\n",
" \n",
"fig = dict( data=data, layout=layout )\n",
"\n",
"py.iplot( fig, validate=False, filename='d3-electoral-map' )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3D Plotting"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using Numpy and Plotly, we can make interactive [3D plots](https://plot.ly/python/#3d) in the Notebook as well."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/20382.embed\" height=\"525\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import plotly.plotly as py\n",
"from plotly.graph_objs import *\n",
"\n",
"import numpy as np\n",
"\n",
"s = np.linspace(0, 2 * np.pi, 240)\n",
"t = np.linspace(0, np.pi, 240)\n",
"tGrid, sGrid = np.meshgrid(s, t)\n",
"\n",
"r = 2 + np.sin(7 * sGrid + 5 * tGrid) # r = 2 + sin(7s+5t)\n",
"x = r * np.cos(sGrid) * np.sin(tGrid) # x = r*cos(s)*sin(t)\n",
"y = r * np.sin(sGrid) * np.sin(tGrid) # y = r*sin(s)*sin(t)\n",
"z = r * np.cos(tGrid) # z = r*cos(t)\n",
"\n",
"surface = Surface(x=x, y=y, z=z)\n",
"data = Data([surface])\n",
"\n",
"layout = Layout(\n",
" title='Parametric Plot',\n",
" scene=Scene(\n",
" xaxis=XAxis(\n",
" gridcolor='rgb(255, 255, 255)',\n",
" zerolinecolor='rgb(255, 255, 255)',\n",
" showbackground=True,\n",
" backgroundcolor='rgb(230, 230,230)'\n",
" ),\n",
" yaxis=YAxis(\n",
" gridcolor='rgb(255, 255, 255)',\n",
" zerolinecolor='rgb(255, 255, 255)',\n",
" showbackground=True,\n",
" backgroundcolor='rgb(230, 230,230)'\n",
" ),\n",
" zaxis=ZAxis(\n",
" gridcolor='rgb(255, 255, 255)',\n",
" zerolinecolor='rgb(255, 255, 255)',\n",
" showbackground=True,\n",
" backgroundcolor='rgb(230, 230,230)'\n",
" )\n",
" )\n",
")\n",
"\n",
"fig = Figure(data=data, layout=layout)\n",
"py.iplot(fig, filename='Parametric_plot')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3D GIF"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note the possible interactions. \n",
"\n",
"<img src=\"http://i.imgur.com/K5gTf6v.gif\" /></a>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ggplot for Python\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[```ggplot for Python```](https://github.com/yhat/ggplot) ports over ggplot2 syntax from R for Python users. The library has a tight integration with dataframes. We can similarly turn ggplot figures into Plotly graphs."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from ggplot import *"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"plot = ggplot(aes(x='date', y='beef'), data=meat) + \\\n",
" geom_line() "
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/20421.embed\" height=\"525\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fig = plot.draw() \n",
"py.iplot_mpl(fig, filename='ipython/ggplot_plot')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Seaborn"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[```Seaborn```](http://stanford.edu/~mwaskom/software/seaborn/index.html) is focused on statistical plotting and plot types. Here we show how you can [combine plot types](http://stanford.edu/~mwaskom/software/seaborn/tutorial/distributions.html#basic-visualization-with-histograms)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from numpy.random import randn\n",
"from scipy import stats\n",
"import matplotlib as mpl\n",
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/20516.embed\" height=\"525\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fig16 = plt.figure()\n",
"\n",
"sns.set_palette(\"hls\")\n",
"mpl.rc(\"figure\", figsize=(8, 4))\n",
"data = randn(200)\n",
"sns.distplot(data);\n",
"\n",
"py.iplot_mpl(fig16, strip_style = True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Rmagic"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```Rmagic``` lets us run R in our Notebook and [embed ggplot2 plots](http://stackoverflow.com/questions/17414349/plot-size-using-ggplot2-in-ipython-notebook-via-rmagic). You can execute code in R, and pull some of the results back into the Python namespace. The return value is determined when [```rpy2```](http://rpy.sourceforge.net/) returns the result of evaluating the final line. Multiple R lines can be executed by joining them with semicolons."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Library/Python/2.7/site-packages/IPython/extensions/rmagic.py:693: UserWarning:\n",
"\n",
"The rmagic extension in IPython is deprecated in favour of rpy2.ipython. If available, that will be loaded instead.\n",
"http://rpy.sourceforge.net/\n",
"\n"
]
}
],
"source": [
"%load_ext rmagic"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<FloatVector - Python:0x10cb3db48 / R:0x7f9d9e4bf748>\n",
"[4.250000]"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%R X=c(1,4,5,7); sd(X); mean(X)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Need help? Try the ggplot2 mailing list: http://groups.google.com/group/ggplot2.\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%R \n",
"library(ggplot2)\n",
"dsamp <- diamonds[sample(nrow(diamonds), 1000), ]\n",
"qplot(carat, price, data=dsamp, colour=clarity)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# IV. Embedding "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Notebook allows us to [embed iframes](http://ipython.org/ipython-doc/2/api/generated/IPython.lib.display.html). For example, from YouTube."
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from IPython.display import YouTubeVideo"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <iframe\n",
" width=\"400\"\n",
" height=\"300\"\n",
" src=\"https://www.youtube.com/embed/p86BPM1GV8M\"\n",
" frameborder=\"0\"\n",
" allowfullscreen\n",
" ></iframe>\n",
" "
],
"text/plain": [
"<IPython.lib.display.YouTubeVideo at 0x10cbc2bd0>"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"YouTubeVideo(\"p86BPM1GV8M\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can embed graphs. The plotly [ggplot2 figure](https://plot.ly/ggplot2/) converter lets us make the plot above into an interactive plot. Then you can call the plot in the NB."
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/20391.embed\" height=\"525\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tls.embed('https://plot.ly/~MattSundquist/20391/price-vs-carat/')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Embedding LaTeX"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can embed LaTeX inside a Notebook by putting a ```$$``` around our math, then run the cell as a Markdown cell. For example, the cell below is ```$$c = \\sqrt{a^2 + b^2}$$```, but the Notebook renders the expression."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$c = \\sqrt{a^2 + b^2}$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or, you can display output from Python, as seen [here](http://stackoverflow.com/questions/13208286/how-to-write-latex-in-ipython-notebook)."
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"$$F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx$$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from IPython.display import display, Math, Latex\n",
"display(Math(r'F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# V. Publishing "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"We can export the Notebook as an HTML, PDF, .py, .ipynb, Markdown, and reST file. You can also turn your NB [into a slideshow](http://ipython.org/ipython-doc/2/notebook/nbconvert.html). For publishing IPython Notebooks directly to GitHub pages, you can use [publisher](https://github.com/plotly/publisher). You can publish Notebooks on GitHub, and they will be generated as a Notebook on [nbviewer.ipython.org](http://nbviewer.ipython.org/). More advanced users can consider [using git for version control](http://stackoverflow.com/questions/18734739/using-ipython-notebooks-under-version-control)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"http://i.imgur.com/5q1Kqqr.png\" /></a>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## IPython widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To publish interactive work, [IPython widgets](http://moderndata.plot.ly/widgets-in-ipython-notebook-and-plotly/) allow you to add sliders, widgets, search boxes, and more to your Notebook. You can use ```IPython.html.widgets``` for manipulating Python objects in the kernel with GUI controls. See the [widget docs](https://ipython.org/ipython-doc/3/api/generated/IPython.html.widgets.interaction.html) for more information. For others to be able to access your work, they'll need an IPython backend. Or, you can use a cloud-based NB option so others can run your work.\n",
"<br>\n",
"<img src=\"http://moderndata.plot.ly/wp-content/uploads/2015/01/best_gif_ever.gif\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Publishing Dash Apps"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For users looking to ship and productionize Python apps, [dash](https://github.com/plotly/dash) is an assemblage of Flask, Socketio, Jinja, Plotly and boiler plate CSS and JS for easily creating data visualization web-apps with your Python data analysis backend.\n",
"<br>\n",
"<img src=\"https://camo.githubusercontent.com/a38f9ed71170e3112dd3e4af1d11d4b081fe2e25/687474703a2f2f692e696d6775722e636f6d2f643379346e776d2e676966\"/></a>\n",
"<br>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Publishing dashboards"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Users publishing interactive graphs can also use [dashboards.ly](http://dashboards.ly/) to arrange a plot with a drag and drop interface. These dashboards can be published, embedded, and shared. <img src=\"http://i.imgur.com/hz0eNpH.png\" /></a>"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <iframe\n",
" width=\"100%\"\n",
" height=\"700\"\n",
" src=\"http://dashboards.ly/view?plots=%5B%5B%7B%22plot_url%22%3A%22https%3A%2F%2Fplot.ly%2F~benji.b%2F38%2Fquarter-1%2F%22%7D%2C%7B%22plot_url%22%3A%22https%3A%2F%2Fplot.ly%2F~benji.b%2F74%2Flog-friends-count-vs-log-followers-count%2F%22%7D%5D%2C%5B%7B%22plot_url%22%3A%22https%3A%2F%2Fplot.ly%2F~benji.b%2F62%2Fepic-epic-established-established-mainstream-mainstream-promising-promising-undi%2F%22%7D%5D%2C%5B%7B%22plot_url%22%3A%22https%3A%2F%2Fplot.ly%2F~benji.b%2F102%2Fpetallength-vs-sepalwidth%2F%22%7D%5D%5D\"\n",
" frameborder=\"0\"\n",
" allowfullscreen\n",
" ></iframe>\n",
" "
],
"text/plain": [
"<IPython.lib.display.IFrame at 0x10cbc87d0>"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import IFrame\n",
"IFrame('http://dashboards.ly/view?plots=%5B%5B%7B%22plot_url%22%3A%22https%3A%2F%2Fplot.ly%2F~benji.b%2F38%2Fquarter-1%2F%22%7D%2C%7B%22plot_url%22%3A%22https%3A%2F%2Fplot.ly%2F~benji.b%2F74%2Flog-friends-count-vs-log-followers-count%2F%22%7D%5D%2C%5B%7B%22plot_url%22%3A%22https%3A%2F%2Fplot.ly%2F~benji.b%2F62%2Fepic-epic-established-established-mainstream-mainstream-promising-promising-undi%2F%22%7D%5D%2C%5B%7B%22plot_url%22%3A%22https%3A%2F%2Fplot.ly%2F~benji.b%2F102%2Fpetallength-vs-sepalwidth%2F%22%7D%5D%5D', width = \"100%\", height = \"700\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## IPython gallery"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For more IPython tutorials, see the [IPython gallery](https://plot.ly/ipython-notebooks/). <img src=\"http://i.imgur.com/AdElJQx.png\" /></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"At the end of a Notebook, we can [style a plot](http://moderndata.plot.ly/custom-styling-for-ipython-notebooks-with-3-lines-of-code/) with these three lines of code. "
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<style>\n",
"\n",
"html {\n",
" font-size: 62.5% !important; }\n",
"body {\n",
" font-size: 1.5em !important; /* currently ems cause chrome bug misinterpreting rems on body element */\n",
" line-height: 1.6 !important;\n",
" font-weight: 400 !important;\n",
" font-family: \"Raleway\", \"HelveticaNeue\", \"Helvetica Neue\", Helvetica, Arial, sans-serif !important;\n",
" color: #222 !important; }\n",
"\n",
"div{ border-radius: 0px !important; }\n",
"div.CodeMirror-sizer{ background: rgb(244, 244, 248) !important; }\n",
"div.input_area{ background: rgb(244, 244, 248) !important; }\n",
"\n",
"div.out_prompt_overlay:hover{ background: rgb(244, 244, 248) !important; }\n",
"div.input_prompt:hover{ background: rgb(244, 244, 248) !important; }\n",
"\n",
"h1, h2, h3, h4, h5, h6 {\n",
" color: #333 !important;\n",
" margin-top: 0 !important;\n",
" margin-bottom: 2rem !important;\n",
" font-weight: 300 !important; }\n",
"h1 { font-size: 4.0rem !important; line-height: 1.2 !important; letter-spacing: -.1rem !important;}\n",
"h2 { font-size: 3.6rem !important; line-height: 1.25 !important; letter-spacing: -.1rem !important; }\n",
"h3 { font-size: 3.0rem !important; line-height: 1.3 !important; letter-spacing: -.1rem !important; }\n",
"h4 { font-size: 2.4rem !important; line-height: 1.35 !important; letter-spacing: -.08rem !important; }\n",
"h5 { font-size: 1.8rem !important; line-height: 1.5 !important; letter-spacing: -.05rem !important; }\n",
"h6 { font-size: 1.5rem !important; line-height: 1.6 !important; letter-spacing: 0 !important; }\n",
"\n",
"@media (min-width: 550px) {\n",
" h1 { font-size: 5.0rem !important; }\n",
" h2 { font-size: 4.2rem !important; }\n",
" h3 { font-size: 3.6rem !important; }\n",
" h4 { font-size: 3.0rem !important; }\n",
" h5 { font-size: 2.4rem !important; }\n",
" h6 { font-size: 1.5rem !important; }\n",
"}\n",
"\n",
"p {\n",
" margin-top: 0 !important; }\n",
" \n",
"a {\n",
" color: #1EAEDB !important; }\n",
"a:hover {\n",
" color: #0FA0CE !important; }\n",
" \n",
"code {\n",
" padding: .2rem .5rem !important;\n",
" margin: 0 .2rem !important;\n",
" font-size: 90% !important;\n",
" white-space: nowrap !important;\n",
" background: #F1F1F1 !important;\n",
" border: 1px solid #E1E1E1 !important;\n",
" border-radius: 4px !important; }\n",
"pre > code {\n",
" display: block !important;\n",
" padding: 1rem 1.5rem !important;\n",
" white-space: pre !important; }\n",
" \n",
"button{ border-radius: 0px !important; }\n",
".navbar-inner{ background-image: none !important; }\n",
"select, textarea{ border-radius: 0px !important; }\n",
"\n",
"</style>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.core.display import HTML\n",
"import urllib2\n",
"HTML(urllib2.urlopen('http://bit.ly/1Bf5Hft').read())"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment