Skip to content

Instantly share code, notes, and snippets.

@msund
Last active June 6, 2016 12:08

Revisions

  1. msund revised this gist May 8, 2014. 1 changed file with 21 additions and 4 deletions.
    25 changes: 21 additions & 4 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -9,9 +9,9 @@
    "cells": [
    {
    "cell_type": "heading",
    "level": 1,
    "level": 2,
    "metadata": {},
    "source": "21 Interactive Plots from matplotlib, ggplot for Python, prettyplotlib, Stack Overflow, and seaborn"
    "source": "21 Interactive Plots from matplotlib, ggplot for Python,<br>prettyplotlib, Stack Overflow, and seaborn"
    },
    {
    "cell_type": "markdown",
    @@ -169,7 +169,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Here's where this gets special. You can get the data from any Plotly graph. That means you can re-plot the graph or part of it, or use your favorite Python tools to wrangle and analyze your data. Check out our [getting started guide](http://nbviewer.ipython.org/github/etpinard/plotly-python-doc/blob/1.0/s0_getting-started/s0_getting-started.ipynb) for a full background on these features."
    "source": "Here's where this gets special. You can get the data from any Plotly graph. That means you can re-plot the graph or part of it, or use your favorite Python tools to wrangle and analyze your data. Check out our [getting started guide](http://nbviewer.ipython.org/github/plotly/python-user-guide/blob/master/s0_getting-started/s0_getting-started.ipynb) for a full background on these features."
    },
    {
    "cell_type": "code",
    @@ -284,7 +284,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly graphs are always interactive, and you can even [stream data to the browser](http://nbviewer.ipython.org/github/plotly/Streaming-Demos/blob/master/IPython%20examples/Real-Time%20Time%20Series.ipynb). You can also embed them in the browser with an iframe snippet."
    "source": "Plotly graphs are always interactive, and you can even [stream data to the browser](http://nbviewer.ipython.org/github/plotly/python-user-guide/blob/master/s7_streaming/s7_streaming.ipynb). You can also embed them in the browser with an iframe snippet."
    },
    {
    "cell_type": "code",
    @@ -953,6 +953,23 @@
    }
    ],
    "prompt_number": 51
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "# CSS styling within IPython notebook\nfrom IPython.core.display import HTML\nimport urllib2\ndef css_styling():\n url = 'https://raw.githubusercontent.com/plotly/python-user-guide/master/custom.css'\n styles = urllib2.urlopen(url).read()\n return HTML(styles)\n\ncss_styling()",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<style>\n /*body {\n background-color: #F5F5F5;\n }*/\n div.cell{\n width: 850px;\n margin-left: 10% !important;\n margin-right: auto;\n }\n h1 {\n font-family: 'Open sans',verdana,arial,sans-serif;\n }\n .text_cell_render h1 {\n font-weight: 200;\n font-size: 40pt;\n line-height: 100%;\n color:#447adb;\n margin-bottom: 0em;\n margin-top: 0em;\n display: block;\n white-space: nowrap;\n } \n h2 {\n font-family: 'Open sans',verdana,arial,sans-serif;\n text-indent:1em;\n }\n .text_cell_render h2 {\n font-weight: 200;\n font-size: 20pt;\n font-style: italic;\n line-height: 100%;\n color:#447adb;\n margin-bottom: 1.5em;\n margin-top: 0.5em;\n display: block;\n white-space: nowrap;\n } \n h3 {\n font-family: 'Open sans',verdana,arial,sans-serif;\n }\n .text_cell_render h3 {\n font-weight: 300;\n font-size: 18pt;\n line-height: 100%;\n color:#447adb;\n margin-bottom: 0.5em;\n margin-top: 2em;\n display: block;\n white-space: nowrap;\n }\n h4 {\n font-family: 'Open sans',verdana,arial,sans-serif;\n }\n .text_cell_render h4 {\n font-weight: 300;\n font-size: 16pt;\n color:#447adb;\n margin-bottom: 0.5em;\n margin-top: 0.5em;\n display: block;\n white-space: nowrap;\n }\n h5 {\n font-family: 'Open sans',verdana,arial,sans-serif;\n }\n .text_cell_render h5 {\n font-weight: 300;\n font-style: normal;\n color: #1d3b84;\n font-size: 16pt;\n margin-bottom: 0em;\n margin-top: 1.5em;\n display: block;\n white-space: nowrap;\n }\n div.text_cell_render{\n font-family: 'Open sans',verdana,arial,sans-serif;\n line-height: 135%;\n font-size: 125%;\n width:750px;\n margin-left:auto;\n margin-right:auto;\n text-align:justify;\n text-justify:inter-word;\n }\n div.output_subarea.output_text.output_pyout {\n overflow-x: auto;\n overflow-y: scroll;\n max-height: 300px;\n }\n div.output_subarea.output_stream.output_stdout.output_text {\n overflow-x: auto;\n overflow-y: scroll;\n max-height: 300px;\n }\n code{\n font-size: 78%;\n }\n .rendered_html code{\n background-color: transparent;\n }\n ul{\n /* color:#447adb; */ // colors text too\n margin: 2em;\n }\n ul li{\n padding-left: 0.5em; \n margin-bottom: 0.5em; \n margin-top: 0.5em; \n }\n ul li li{\n padding-left: 0.2em; \n margin-bottom: 0.2em; \n margin-top: 0.2em; \n }\n ol{\n /* color:#447adb; */ // colors text too\n margin: 2em;\n }\n ol li{\n padding-left: 0.5em; \n margin-bottom: 0.5em; \n margin-top: 0.5em; \n }\n /*.prompt{\n display: None;\n } */\n ul li{\n padding-left: 0.5em; \n margin-bottom: 0.5em; \n margin-top: 0.2em; \n }\n a:link{\n font-weight: bold;\n color:#447adb;\n }\n a:visited{\n font-weight: bold;\n color: #1d3b84;\n }\n a:hover{\n font-weight: bold;\n color: #1d3b84;\n }\n a:focus{\n font-weight: bold;\n color:#447adb;\n }\n a:active{\n font-weight: bold;\n color:#447adb;\n }\n .rendered_html :link {\n text-decoration: none; \n }\n .rendered_html :hover {\n text-decoration: none; \n }\n .rendered_html :visited {\n text-decoration: none;\n }\n .rendered_html :focus {\n text-decoration: none;\n }\n .rendered_html :active {\n text-decoration: none;\n }\n .warning{\n color: rgb( 240, 20, 20 )\n } \n hr {\n color: #f3f3f3;\n background-color: #f3f3f3;\n height: 1px;\n }\n blockquote{\n display:block;\n background: #f3f3f3;\n font-family: 'Open sans',verdana,arial,sans-serif;\n width:610px;\n padding: 15px 15px 15px 15px;\n text-align:justify;\n text-justify:inter-word;\n }\n blockquote p {\n margin-bottom: 0;\n line-height: 125%;\n font-size: 100%;\n }\n /* element.style {\n } */ \n</style>\n<script>\n MathJax.Hub.Config({\n TeX: {\n extensions: [\"AMSmath.js\"]\n },\n tex2jax: {\n inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n },\n displayAlign: 'center', // Change this to 'center' to center equations.\n \"HTML-CSS\": {\n styles: {'.MathJax_Display': {\"margin\": 4}}\n }\n });\n</script>\n",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 1,
    "text": "<IPython.core.display.HTML at 0x102c04110>"
    }
    ],
    "prompt_number": 1
    }
    ],
    "metadata": {}
  2. msund revised this gist May 6, 2014. 1 changed file with 63 additions and 63 deletions.
    126 changes: 63 additions & 63 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -16,7 +16,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly is collaborative, makes beautiful interactive graphs with a URL for you, and stores your data and graphs together. This NB shows how to use Plotly to share plots from some awesome Python plotting libraries. The matplotlylib project is a collaboration with [mpld3](http://mpld3.github.io/index.html) and [Jake Vanderplas](https://github.com/jakevdp). We've put together a [User Guide](http://nbviewer.ipython.org/github/plotly/python-user-guide/blob/master/s00_homepage/s00_homepage.ipynb#Installation-guidelines) that outlines the full extent of Plotly's APIs.\n\nFor best results, you can copy and paste this Notebook and key. Run `$ pip install plotly` inside a terminal then start up a Notebook. Let's get started."
    "source": "Plotly is collaborative, makes beautiful interactive graphs with a URL for you, and stores your data and graphs together. This NB shows how to use Plotly to share plots from some awesome Python plotting libraries. The matplotlylib project is a collaboration with [mpld3](http://mpld3.github.io/index.html) and [Jake Vanderplas](https://github.com/jakevdp). We've put together a [User Guide](http://nbviewer.ipython.org/github/plotly/python-user-guide/blob/master/s00_homepage/s00_homepage.ipynb#Installation-guidelines) that outlines the full extent of Plotly's APIs.\n\nFor best results, you can copy and paste this Notebook and key. Run `$ pip install plotly` inside a terminal then start up a Notebook. We'll also be using ggplot, seaborn, and prettyplotlib, which you can also all install form pip. Let's get started."
    },
    {
    "cell_type": "code",
    @@ -98,7 +98,7 @@
    "metadata": {},
    "output_type": "display_data",
    "png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEZCAYAAABrUHmEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXt8FOW5+L+bANlEIOEe7ksiNcSASbiJIglaBE1Rq1LE\nqqDWUooEj1VPexQZrK0W6ymXWo6n8jO0iD2KhQJRJCIBAblIEhEIaoPL/RICCbckhmR+f8zuZvaW\n7CabveX55jOfndvOvjN5Zp55n9trUFVVRRAEQRA8ICLQDRAEQRBCB1EagiAIgseI0hAEQRA8RpSG\nIAiC4DGiNARBEASPEaUhCIIgeIwoDUFoImazmYiICOrq6vzye3feeSd///vfAcjJyeGWW26xbYuI\niODQoUNNOu4777zD+PHjfdJGIfwRpSEEFJPJRExMDB07dqR///7ceuutrFy5MtDNCko+/PBDHn74\n4WYdw5Wi++lPf8rHH3/c3OYJrQRRGkJAMRgMrFu3jgsXLvDBBx9w44038tRTT/HMM88EumlhjeT0\nCk1FlIYQNAwbNozf//73zJs3jwULFvDvf/8bgNzcXNLS0oiNjWXcuHH87W9/s33H+ua8cuVKkpKS\nGDBgAO+++y7FxcWMHj2aAQMGsHDhQtv+OTk5jB49mhdeeIFevXoxefJkiouLbdsrKytZunQpI0aM\nYPTo0bz//vu2B6yqqqxYsYLk5GRSU1PZsmVLg+dz/PhxXnjhBUwmE48++iiFhYW2bVu3buWOO+6g\nc+fO9OnTh9dff922bc+ePcyYMYPu3btz7bXXsmHDBgAyMzNZunRpo9exoes1ZswYAOLi4ujYsSM7\nduxwMnV98803ZGdn069fP2bPns23335r25aZmcmrr77K+PHj6dmzJ08//TTl5eWNtkkII1RBCCAm\nk0nduHGj3brS0lK1TZs26j/+8Q9VVVU1Pz9f3bdvn3r16lV1/fr1aocOHdRvv/1WVVVV/e6771SD\nwaA++OCD6vHjx9W3335bveaaa9SsrCy1qKhI/fLLL9WOHTuqR44cUVVVVd9++221bdu26q9+9Sv1\nzJkz6quvvqr26tXL9tv/8R//oT7wwAPqd999pxYVFakpKSnqhg0bVFVV1bVr16oJCQnqZ599pn75\n5ZfqyJEj1YiICLW2ttbluY0ZM0Z98skn1TNnzqhLly5VO3bsqFZWVqqqqqrDhg1TV61apdbW1qrl\n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\n",
    "text": "<matplotlib.figure.Figure at 0x1061c4750>"
    "text": "<matplotlib.figure.Figure at 0x106091750>"
    }
    ],
    "prompt_number": 5
    @@ -116,10 +116,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3535\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3560\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x106311310>"
    "text": "<IPython.core.display.HTML at 0x101ad27d0>"
    }
    ],
    "prompt_number": 6
    @@ -137,10 +137,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3536\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3561\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x105d9d3d0>"
    "text": "<IPython.core.display.HTML at 0x1060a17d0>"
    }
    ],
    "prompt_number": 7
    @@ -158,10 +158,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3537\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3562\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1063bf550>"
    "text": "<IPython.core.display.HTML at 0x10639a550>"
    }
    ],
    "prompt_number": 8
    @@ -233,7 +233,7 @@
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 12,
    "text": "<IPython.core.display.Image at 0x106314f10>"
    "text": "<IPython.core.display.Image at 0x10043b910>"
    }
    ],
    "prompt_number": 12
    @@ -246,7 +246,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/Mq490fb.png')",
    "input": "Image(url='https://i.imgur.com/Mq490fb.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -255,7 +255,7 @@
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 13,
    "text": "<IPython.core.display.Image at 0x106330290>"
    "text": "<IPython.core.display.Image at 0x10639a650>"
    }
    ],
    "prompt_number": 13
    @@ -276,7 +276,7 @@
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/1307\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1061c4410>"
    "text": "<IPython.core.display.HTML at 0x1060bff90>"
    }
    ],
    "prompt_number": 14
    @@ -316,7 +316,7 @@
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 17,
    "text": "<IPython.core.display.HTML at 0x1061c4410>"
    "text": "<IPython.core.display.HTML at 0x1060bf350>"
    }
    ],
    "prompt_number": 17
    @@ -329,7 +329,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='http://i.imgur.com/XjvtYMr.png')",
    "input": "Image(url='http://i.imgur.com/XjvtYMr.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -338,7 +338,7 @@
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 18,
    "text": "<IPython.core.display.Image at 0x106330e10>"
    "text": "<IPython.core.display.Image at 0x10639ad90>"
    }
    ],
    "prompt_number": 18
    @@ -351,7 +351,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import HTML\nHTML('<br><center><iframe class=\"vine-embed\" src=\"https://vine.co/v/Mvzin6HZzLB/embed/simple\" width=\"600\" height=\"600\" frameborder=\"0\"></iframe><script async src=\"//platform.vine.co/static/scripts/embed.js\" charset=\"utf-8\"></script></center><br>')",
    "input": "HTML('<br><center><iframe class=\"vine-embed\" src=\"https://vine.co/v/Mvzin6HZzLB/embed/simple\" width=\"600\" height=\"600\" frameborder=\"0\"></iframe><script async src=\"//platform.vine.co/static/scripts/embed.js\" charset=\"utf-8\"></script></center><br>')",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -360,7 +360,7 @@
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 19,
    "text": "<IPython.core.display.HTML at 0x106330210>"
    "text": "<IPython.core.display.HTML at 0x1060a3150>"
    }
    ],
    "prompt_number": 19
    @@ -373,7 +373,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/CxIYtzG.png')",
    "input": "Image(url='https://i.imgur.com/CxIYtzG.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -382,7 +382,7 @@
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 20,
    "text": "<IPython.core.display.Image at 0x1061b2e90>"
    "text": "<IPython.core.display.Image at 0x1060bff90>"
    }
    ],
    "prompt_number": 20
    @@ -395,7 +395,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/gUC4ajR.png')",
    "input": "Image(url='https://i.imgur.com/gUC4ajR.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -404,7 +404,7 @@
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 21,
    "text": "<IPython.core.display.Image at 0x106330110>"
    "text": "<IPython.core.display.Image at 0x1060bfc90>"
    }
    ],
    "prompt_number": 21
    @@ -422,10 +422,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3538\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3563\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1063d2110>"
    "text": "<IPython.core.display.HTML at 0x106435a90>"
    }
    ],
    "prompt_number": 22
    @@ -443,10 +443,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3539\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3564\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1064c9d50>"
    "text": "<IPython.core.display.HTML at 0x106488d50>"
    }
    ],
    "prompt_number": 23
    @@ -469,10 +469,10 @@
    "text": "mean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\n"
    },
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3540\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3565\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10659cfd0>"
    "text": "<IPython.core.display.HTML at 0x106d446d0>"
    }
    ],
    "prompt_number": 24
    @@ -490,10 +490,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3541\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3566\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10647add0>"
    "text": "<IPython.core.display.HTML at 0x106cf8d10>"
    }
    ],
    "prompt_number": 25
    @@ -506,7 +506,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/HEJEnjQ.png')",
    "input": "Image(url='https://i.imgur.com/HEJEnjQ.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -515,7 +515,7 @@
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 26,
    "text": "<IPython.core.display.Image at 0x1063b2cd0>"
    "text": "<IPython.core.display.Image at 0x106372890>"
    }
    ],
    "prompt_number": 26
    @@ -567,10 +567,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3557\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3582\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x113983990>"
    "text": "<IPython.core.display.HTML at 0x1126eb490>"
    }
    ],
    "prompt_number": 52
    @@ -597,10 +597,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3543\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3568\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10649c610>"
    "text": "<IPython.core.display.HTML at 0x10645a490>"
    }
    ],
    "prompt_number": 31
    @@ -627,10 +627,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3544\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3569\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1116a5bd0>"
    "text": "<IPython.core.display.HTML at 0x1115a4b50>"
    }
    ],
    "prompt_number": 33
    @@ -652,10 +652,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3545\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3570\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110b97c90>"
    "text": "<IPython.core.display.HTML at 0x110c96f90>"
    }
    ],
    "prompt_number": 35
    @@ -691,10 +691,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3546\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3571\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110b92ad0>"
    "text": "<IPython.core.display.HTML at 0x110c1c210>"
    }
    ],
    "prompt_number": 38
    @@ -708,7 +708,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "The gallery of [examples](http://nbviewer.ipython.org/github/olgabot/prettyplotlib/blob/master/ipython_notebooks/Examples%20of%20everything%20pretty%20and%20plotted!.ipynb?create=1) from [prettyplotlib](https://github.com/olgabot/prettyplotlib), a library by [Olga Botvinnik](https://github.com/olgabot), can be a fun one to make interactive. Here's a scatter; let us know if you make others. You'll note that not all elements of the styling come through. "
    "source": "The lovely gallery of [examples](http://nbviewer.ipython.org/github/olgabot/prettyplotlib/blob/master/ipython_notebooks/Examples%20of%20everything%20pretty%20and%20plotted!.ipynb?create=1) from [prettyplotlib](https://github.com/olgabot/prettyplotlib), a matplotlib enhnacing library by [Olga Botvinnik](https://github.com/olgabot), is a fun one to make interactive. Here's a scatter; let us know if you make others. You'll note that not all elements of the styling come through. Head over to [the homepage](http://olgabot.github.io/prettyplotlib/) for documentation."
    },
    {
    "cell_type": "code",
    @@ -718,10 +718,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3547\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3572\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110bfc390>"
    "text": "<IPython.core.display.HTML at 0x111596390>"
    }
    ],
    "prompt_number": 39
    @@ -739,10 +739,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3548\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3573\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x111b21f50>"
    "text": "<IPython.core.display.HTML at 0x110171b50>"
    }
    ],
    "prompt_number": 40
    @@ -756,7 +756,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Another library we really dig is [seaborn](http://stanford.edu/~mwaskom/software/seaborn/index.html), by Michael Waskom. You may need to [import six](http://stackoverflow.com/questions/13967428/importerror-no-module-named-six), which you can do from pip. The styling isn't yet translated to Plotly, so we'll go to Plotly's default settings. "
    "source": "Another library we really dig is [seaborn](http://stanford.edu/~mwaskom/software/seaborn/index.html), a library to maximize aesthetics of matplotlib plots. It's by by [Michael Waskom](http://stanford.edu/~mwaskom/). You'll need to install it with ` $ pip install seaborn`, and may need to [import six](http://stackoverflow.com/questions/13967428/importerror-no-module-named-six), which you can do from pip. The styling isn't yet translated to Plotly, so we'll go to Plotly's default settings. "
    },
    {
    "cell_type": "code",
    @@ -784,10 +784,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3549\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3574\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1116a1e10>"
    "text": "<IPython.core.display.HTML at 0x110c84f50>"
    }
    ],
    "prompt_number": 43
    @@ -805,10 +805,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3550\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3575\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110be3150>"
    "text": "<IPython.core.display.HTML at 0x110ce3150>"
    }
    ],
    "prompt_number": 44
    @@ -835,10 +835,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3551\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3576\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110b7bf90>"
    "text": "<IPython.core.display.HTML at 0x110cf2550>"
    }
    ],
    "prompt_number": 46
    @@ -862,10 +862,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3552\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3577\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110053510>"
    "text": "<IPython.core.display.HTML at 0x11157f510>"
    }
    ],
    "prompt_number": 47
    @@ -883,10 +883,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3553\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3578\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f920750>"
    "text": "<IPython.core.display.HTML at 0x110cec910>"
    }
    ],
    "prompt_number": 48
    @@ -904,10 +904,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3554\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3579\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110615610>"
    "text": "<IPython.core.display.HTML at 0x10fade810>"
    }
    ],
    "prompt_number": 49
    @@ -925,10 +925,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3555\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3580\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f9da110>"
    "text": "<IPython.core.display.HTML at 0x10f9f0110>"
    }
    ],
    "prompt_number": 50
    @@ -946,10 +946,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3556\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3581\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x11053ce10>"
    "text": "<IPython.core.display.HTML at 0x10f9f9d10>"
    }
    ],
    "prompt_number": 51
  3. msund revised this gist May 6, 2014. 1 changed file with 238 additions and 105 deletions.
    343 changes: 238 additions & 105 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -16,7 +16,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly is collaborative, makes beautiful interactive graphs with a URL for you, and stores your data and graphs together. This NB shows how to use Plotly to share plots from some awesome Python libraries. The matplotlylib project is a collaboration with [mpld3](http://mpld3.github.io/index.html) and [Jake Vanderplas](https://github.com/jakevdp).\n\nFor best results, you can copy and paste this Notebook and key. Just run `$ pip install plotly` and start up a Notebook. Let's set up our environment and packages."
    "source": "Plotly is collaborative, makes beautiful interactive graphs with a URL for you, and stores your data and graphs together. This NB shows how to use Plotly to share plots from some awesome Python plotting libraries. The matplotlylib project is a collaboration with [mpld3](http://mpld3.github.io/index.html) and [Jake Vanderplas](https://github.com/jakevdp). We've put together a [User Guide](http://nbviewer.ipython.org/github/plotly/python-user-guide/blob/master/s00_homepage/s00_homepage.ipynb#Installation-guidelines) that outlines the full extent of Plotly's APIs.\n\nFor best results, you can copy and paste this Notebook and key. Run `$ pip install plotly` inside a terminal then start up a Notebook. Let's get started."
    },
    {
    "cell_type": "code",
    @@ -25,7 +25,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 35
    "prompt_number": 1
    },
    {
    "cell_type": "markdown",
    @@ -39,7 +39,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 36
    "prompt_number": 2
    },
    {
    "cell_type": "code",
    @@ -48,7 +48,12 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 37
    "prompt_number": 3
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "You'll want to have version 1.0.0. If not, run `$ pip install plotly --upgrade` in a terminal. Check out our User Guide for more details on [where to get your key](http://nbviewer.ipython.org/github/plotly/python-user-guide/blob/master/s00_homepage/s00_homepage.ipynb#Installation-guidelines). Problems or questions? Email feedback@plot.ly or find us on [Twitter](https://twitter.com/plotlygraphs)."
    },
    {
    "cell_type": "code",
    @@ -60,15 +65,15 @@
    {
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 38,
    "prompt_number": 4,
    "text": "'1.0.0'"
    }
    ],
    "prompt_number": 38
    "prompt_number": 4
    },
    {
    "cell_type": "heading",
    "level": 1,
    "level": 2,
    "metadata": {},
    "source": "I. matplotlib Gallery graphs"
    },
    @@ -93,10 +98,10 @@
    "metadata": {},
    "output_type": "display_data",
    "png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEZCAYAAABrUHmEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXt8FOW5+L+bANlEIOEe7ksiNcSASbiJIglaBE1Rq1LE\nqqDWUooEj1VPexQZrK0W6ymXWo6n8jO0iD2KhQJRJCIBAblIEhEIaoPL/RICCbckhmR+f8zuZvaW\n7CabveX55jOfndvOvjN5Zp55n9trUFVVRRAEQRA8ICLQDRAEQRBCB1EagiAIgseI0hAEQRA8RpSG\nIAiC4DGiNARBEASPEaUhCIIgeIwoDUFoImazmYiICOrq6vzye3feeSd///vfAcjJyeGWW26xbYuI\niODQoUNNOu4777zD+PHjfdJGIfwRpSEEFJPJRExMDB07dqR///7ceuutrFy5MtDNCko+/PBDHn74\n4WYdw5Wi++lPf8rHH3/c3OYJrQRRGkJAMRgMrFu3jgsXLvDBBx9w44038tRTT/HMM88EumlhjeT0\nCk1FlIYQNAwbNozf//73zJs3jwULFvDvf/8bgNzcXNLS0oiNjWXcuHH87W9/s33H+ua8cuVKkpKS\nGDBgAO+++y7FxcWMHj2aAQMGsHDhQtv+OTk5jB49mhdeeIFevXoxefJkiouLbdsrKytZunQpI0aM\nYPTo0bz//vu2B6yqqqxYsYLk5GRSU1PZsmVLg+dz/PhxXnjhBUwmE48++iiFhYW2bVu3buWOO+6g\nc+fO9OnTh9dff922bc+ePcyYMYPu3btz7bXXsmHDBgAyMzNZunRpo9exoes1ZswYAOLi4ujYsSM7\nduxwMnV98803ZGdn069fP2bPns23335r25aZmcmrr77K+PHj6dmzJ08//TTl5eWNtkkII1RBCCAm\nk0nduHGj3brS0lK1TZs26j/+8Q9VVVU1Pz9f3bdvn3r16lV1/fr1aocOHdRvv/1WVVVV/e6771SD\nwaA++OCD6vHjx9W3335bveaaa9SsrCy1qKhI/fLLL9WOHTuqR44cUVVVVd9++221bdu26q9+9Sv1\nzJkz6quvvqr26tXL9tv/8R//oT7wwAPqd999pxYVFakpKSnqhg0bVFVV1bVr16oJCQnqZ599pn75\n5ZfqyJEj1YiICLW2ttbluY0ZM0Z98skn1TNnzqhLly5VO3bsqFZWVqqqqqrDhg1TV61apdbW1qrl\n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\n",
    "text": "<matplotlib.figure.Figure at 0x11091ab90>"
    "text": "<matplotlib.figure.Figure at 0x1061c4750>"
    }
    ],
    "prompt_number": 39
    "prompt_number": 5
    },
    {
    "cell_type": "markdown",
    @@ -111,13 +116,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3486\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3535\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f07f190>"
    "text": "<IPython.core.display.HTML at 0x106311310>"
    }
    ],
    "prompt_number": 40
    "prompt_number": 6
    },
    {
    "cell_type": "markdown",
    @@ -132,13 +137,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3487\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3536\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1108e6390>"
    "text": "<IPython.core.display.HTML at 0x105d9d3d0>"
    }
    ],
    "prompt_number": 41
    "prompt_number": 7
    },
    {
    "cell_type": "markdown",
    @@ -153,13 +158,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3488\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3537\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f144390>"
    "text": "<IPython.core.display.HTML at 0x1063bf550>"
    }
    ],
    "prompt_number": 42
    "prompt_number": 8
    },
    {
    "cell_type": "markdown",
    @@ -176,11 +181,11 @@
    {
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 43,
    "prompt_number": 9,
    "text": "[{'name': '_line0',\n 'x': [0.0,\n 0.20000000000000001,\n 0.40000000000000002,\n 0.60000000000000009,\n 0.80000000000000004,\n 1.0,\n 1.2000000000000002,\n 1.4000000000000001,\n 1.6000000000000001,\n 1.8,\n 2.0,\n 2.2000000000000002,\n 2.4000000000000004,\n 2.6000000000000001,\n 2.8000000000000003,\n 3.0,\n 3.2000000000000002,\n 3.4000000000000004,\n 3.6000000000000001,\n 3.8000000000000003,\n 4.0,\n 4.2000000000000002,\n 4.4000000000000004,\n 4.6000000000000005,\n 4.8000000000000007],\n 'y': [1.0,\n 0.25300171651849518,\n -0.54230030891302927,\n -0.44399794031078654,\n 0.13885028597711233,\n 0.36787944117144233,\n 0.09307413008823949,\n -0.19950113459002566,\n -0.16333771416280363,\n 0.051080165611754998,\n 0.1353352832366127,\n 0.034240058964379601,\n -0.073392365906047419,\n -0.060088587008433003,\n 0.018791342780197139,\n 0.049787068367863944,\n 0.012596213757493282,\n -0.026999542555766767,\n -0.022105355809443925,\n 0.0069129486808399343,\n 0.018315638888734179,\n 0.0046338880779826647,\n -0.0099325766273000524,\n -0.0081321059420741033,\n 0.0025431316975542792]}]"
    }
    ],
    "prompt_number": 43
    "prompt_number": 9
    },
    {
    "cell_type": "markdown",
    @@ -194,7 +199,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 44
    "prompt_number": 10
    },
    {
    "cell_type": "code",
    @@ -209,7 +214,7 @@
    "text": "Figure(\n data=Data([\n Scatter(\n x=[0.0, 0.2, 0.4, 0.6000000000000001, 0.8, 1.0, 1.2000000000000...],\n y=[1.0, 0.2530017165184952, -0.5423003089130293, -0.44399794031...],\n name='_line0',\n mode='markers',\n marker=Marker(\n symbol='dot',\n line=Line(\n color='#000000',\n width=0.5\n ),\n size=30,\n color='#0000FF',\n opacity=1\n )\n )\n ]),\n layout=Layout(\n xaxis=XAxis(\n domain=[0.0, 1.0],\n range=[0.0, 5.0],\n showline=True,\n ticks='inside',\n showgrid=False,\n zeroline=False,\n anchor='y',\n mirror=True\n ),\n yaxis=YAxis(\n domain=[0.0, 1.0],\n range=[-0.6000000000000001, 1.2],\n showline=True,\n ticks='inside',\n showgrid=False,\n zeroline=False,\n anchor='x',\n mirror=True\n ),\n hovermode='closest',\n showlegend=False\n )\n)\n"
    }
    ],
    "prompt_number": 45
    "prompt_number": 11
    },
    {
    "cell_type": "markdown",
    @@ -219,24 +224,46 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/RusH4k2.png?1')",
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/WG0gb9J.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<img src=\"https://i.imgur.com/RusH4k2.png?1\"/>",
    "html": "<img src=\"https://i.imgur.com/WG0gb9J.png\"/>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 46,
    "text": "<IPython.core.display.Image at 0x10f098a90>"
    "prompt_number": 12,
    "text": "<IPython.core.display.Image at 0x106314f10>"
    }
    ],
    "prompt_number": 46
    "prompt_number": 12
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "I can now call that graph into the NB. And if I want to see the data for the fit or access the figure styling, I can run the same commands, but now on this graph."
    "source": "We also keep the data and graph together. You can analyze it, share it, or add to other plots. You can [append data](https://plot.ly/python/add-append-extend) to your plots, copy and paste, import, or upload data. Take-away: a Python user could make plots with an Excel user, [ggplot2 Ploty package](ropensci.org/blog/2014/04/17/plotly/), and [MATLAB](plot.ly/MATLAB) user. That's collaboration. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/Mq490fb.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<img src=\"https://i.imgur.com/Mq490fb.png\"/>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 13,
    "text": "<IPython.core.display.Image at 0x106330290>"
    }
    ],
    "prompt_number": 13
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "I can now call that graph into the NB. I can keep the styling, re-use that styling on future graphs, and save styles from other graphs. And if I want to see the data for the fit or access the figure styling, I can run the same commands, but on the updated figure and data for this graph. I don't need to re-code it, and I can save and share this version. "
    },
    {
    "cell_type": "code",
    @@ -249,15 +276,77 @@
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/1307\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f0985d0>"
    "text": "<IPython.core.display.HTML at 0x1061c4410>"
    }
    ],
    "prompt_number": 47
    "prompt_number": 14
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly graphs are always interactive, and you can even [stream data to the browser](http://nbviewer.ipython.org/github/plotly/Streaming-Demos/blob/master/IPython%20examples/Real-Time%20Time%20Series.ipynb). You can also embed them in the browser with an iframe snippet."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import HTML",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 15
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "s = \"\"\"<pre style=\"background:#f1f1f1;color:#000\">&lt;iframe src=<span style=\"color:#c03030\">\"https://plot.ly/~etpinard/176/650/550\"</span> width=<span style=\"color:#c03030\">\"650\"</span> height=550<span style=\"color:#c03030\">\" frameBorder=\"</span>0<span style=\"color:#c03030\">\" seamless=\"</span>seamless<span style=\"color:#c03030\">\" scrolling=\"</span>no<span style=\"color:#c03030\">\">&lt;/iframe></span></pre>\"\"\"",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 16
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "h = HTML(s); h",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<pre style=\"background:#f1f1f1;color:#000\">&lt;iframe src=<span style=\"color:#c03030\">\"https://plot.ly/~etpinard/176/650/550\"</span> width=<span style=\"color:#c03030\">\"650\"</span> height=550<span style=\"color:#c03030\">\" frameBorder=\"</span>0<span style=\"color:#c03030\">\" seamless=\"</span>seamless<span style=\"color:#c03030\">\" scrolling=\"</span>no<span style=\"color:#c03030\">\">&lt;/iframe></span></pre>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 17,
    "text": "<IPython.core.display.HTML at 0x1061c4410>"
    }
    ],
    "prompt_number": 17
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Where it remains interactive. That means your for-free defaults are: D3 graphs, drawn with JavaScript, and shared data. Here's how it looks in the Washington Post."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='http://i.imgur.com/XjvtYMr.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<img src=\"http://i.imgur.com/XjvtYMr.png\"/>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 18,
    "text": "<IPython.core.display.Image at 0x106330e10>"
    }
    ],
    "prompt_number": 18
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "And Plotly graphs are interactive. "
    "source": "It's fun to zoom. Then double-click to re-size. "
    },
    {
    "cell_type": "code",
    @@ -270,11 +359,55 @@
    "html": "<br><center><iframe class=\"vine-embed\" src=\"https://vine.co/v/Mvzin6HZzLB/embed/simple\" width=\"600\" height=\"600\" frameborder=\"0\"></iframe><script async src=\"//platform.vine.co/static/scripts/embed.js\" charset=\"utf-8\"></script></center><br>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 48,
    "text": "<IPython.core.display.HTML at 0x10f098b10>"
    "prompt_number": 19,
    "text": "<IPython.core.display.HTML at 0x106330210>"
    }
    ],
    "prompt_number": 48
    "prompt_number": 19
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plots can be collaboratively edited and shared with others."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/CxIYtzG.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<img src=\"https://i.imgur.com/CxIYtzG.png\"/>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 20,
    "text": "<IPython.core.display.Image at 0x1061b2e90>"
    }
    ],
    "prompt_number": 20
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "So you can keep all your plots for your project, team, or personal work in one plce, you get a profile, like this: https://plot.ly/~jackp/. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/gUC4ajR.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<img src=\"https://i.imgur.com/gUC4ajR.png\"/>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 21,
    "text": "<IPython.core.display.Image at 0x106330110>"
    }
    ],
    "prompt_number": 21
    },
    {
    "cell_type": "markdown",
    @@ -289,13 +422,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3489\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3538\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110939e90>"
    "text": "<IPython.core.display.HTML at 0x1063d2110>"
    }
    ],
    "prompt_number": 49
    "prompt_number": 22
    },
    {
    "cell_type": "markdown",
    @@ -310,13 +443,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3490\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3539\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110d22510>"
    "text": "<IPython.core.display.HTML at 0x1064c9d50>"
    }
    ],
    "prompt_number": 50
    "prompt_number": 23
    },
    {
    "cell_type": "markdown",
    @@ -336,13 +469,13 @@
    "text": "mean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\n"
    },
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3491\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3540\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f073250>"
    "text": "<IPython.core.display.HTML at 0x10659cfd0>"
    }
    ],
    "prompt_number": 51
    "prompt_number": 24
    },
    {
    "cell_type": "markdown",
    @@ -357,13 +490,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3492\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3541\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1108f6e50>"
    "text": "<IPython.core.display.HTML at 0x10647add0>"
    }
    ],
    "prompt_number": 52
    "prompt_number": 25
    },
    {
    "cell_type": "markdown",
    @@ -381,11 +514,11 @@
    "html": "<img src=\"https://i.imgur.com/HEJEnjQ.png\"/>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 53,
    "text": "<IPython.core.display.Image at 0x10f668090>"
    "prompt_number": 26,
    "text": "<IPython.core.display.Image at 0x1063b2cd0>"
    }
    ],
    "prompt_number": 53
    "prompt_number": 26
    },
    {
    "cell_type": "heading",
    @@ -405,7 +538,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 54
    "prompt_number": 27
    },
    {
    "cell_type": "markdown",
    @@ -419,7 +552,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 55
    "prompt_number": 28
    },
    {
    "cell_type": "markdown",
    @@ -434,13 +567,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3493\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3557\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1109693d0>"
    "text": "<IPython.core.display.HTML at 0x113983990>"
    }
    ],
    "prompt_number": 56
    "prompt_number": 52
    },
    {
    "cell_type": "markdown",
    @@ -454,7 +587,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 57
    "prompt_number": 30
    },
    {
    "cell_type": "code",
    @@ -464,13 +597,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3494\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3543\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f0d9690>"
    "text": "<IPython.core.display.HTML at 0x10649c610>"
    }
    ],
    "prompt_number": 58
    "prompt_number": 31
    },
    {
    "cell_type": "markdown",
    @@ -484,7 +617,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 59
    "prompt_number": 32
    },
    {
    "cell_type": "code",
    @@ -494,13 +627,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3495\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3544\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1109b3750>"
    "text": "<IPython.core.display.HTML at 0x1116a5bd0>"
    }
    ],
    "prompt_number": 60
    "prompt_number": 33
    },
    {
    "cell_type": "code",
    @@ -509,7 +642,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 61
    "prompt_number": 34
    },
    {
    "cell_type": "code",
    @@ -519,13 +652,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3496\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3545\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1109379d0>"
    "text": "<IPython.core.display.HTML at 0x110b97c90>"
    }
    ],
    "prompt_number": 62
    "prompt_number": 35
    },
    {
    "cell_type": "markdown",
    @@ -539,7 +672,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 63
    "prompt_number": 36
    },
    {
    "cell_type": "code",
    @@ -548,7 +681,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 64
    "prompt_number": 37
    },
    {
    "cell_type": "code",
    @@ -558,13 +691,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3497\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3546\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1061c8d10>"
    "text": "<IPython.core.display.HTML at 0x110b92ad0>"
    }
    ],
    "prompt_number": 65
    "prompt_number": 38
    },
    {
    "cell_type": "heading",
    @@ -585,13 +718,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3498\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3547\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f1d7210>"
    "text": "<IPython.core.display.HTML at 0x110bfc390>"
    }
    ],
    "prompt_number": 66
    "prompt_number": 39
    },
    {
    "cell_type": "markdown",
    @@ -606,13 +739,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3499\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3548\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10fd5d550>"
    "text": "<IPython.core.display.HTML at 0x111b21f50>"
    }
    ],
    "prompt_number": 67
    "prompt_number": 40
    },
    {
    "cell_type": "heading",
    @@ -632,7 +765,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 68
    "prompt_number": 41
    },
    {
    "cell_type": "code",
    @@ -641,7 +774,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 69
    "prompt_number": 42
    },
    {
    "cell_type": "code",
    @@ -651,13 +784,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3500\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3549\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x111e96650>"
    "text": "<IPython.core.display.HTML at 0x1116a1e10>"
    }
    ],
    "prompt_number": 70
    "prompt_number": 43
    },
    {
    "cell_type": "markdown",
    @@ -672,13 +805,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3501\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3550\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e81f890>"
    "text": "<IPython.core.display.HTML at 0x110be3150>"
    }
    ],
    "prompt_number": 71
    "prompt_number": 44
    },
    {
    "cell_type": "markdown",
    @@ -692,7 +825,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 72
    "prompt_number": 45
    },
    {
    "cell_type": "code",
    @@ -702,17 +835,17 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3502\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3551\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10fd75490>"
    "text": "<IPython.core.display.HTML at 0x110b7bf90>"
    }
    ],
    "prompt_number": 73
    "prompt_number": 46
    },
    {
    "cell_type": "heading",
    "level": 1,
    "level": 2,
    "metadata": {},
    "source": "V. Stack Overflow Answers"
    },
    @@ -729,13 +862,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3503\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3552\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f5c0250>"
    "text": "<IPython.core.display.HTML at 0x110053510>"
    }
    ],
    "prompt_number": 74
    "prompt_number": 47
    },
    {
    "cell_type": "markdown",
    @@ -750,13 +883,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3504\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3553\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f55cd10>"
    "text": "<IPython.core.display.HTML at 0x10f920750>"
    }
    ],
    "prompt_number": 75
    "prompt_number": 48
    },
    {
    "cell_type": "markdown",
    @@ -771,13 +904,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3505\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3554\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10fd63190>"
    "text": "<IPython.core.display.HTML at 0x110615610>"
    }
    ],
    "prompt_number": 76
    "prompt_number": 49
    },
    {
    "cell_type": "markdown",
    @@ -792,13 +925,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3506\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3555\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1108bde90>"
    "text": "<IPython.core.display.HTML at 0x10f9da110>"
    }
    ],
    "prompt_number": 77
    "prompt_number": 50
    },
    {
    "cell_type": "markdown",
    @@ -813,13 +946,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3507\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3556\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f488510>"
    "text": "<IPython.core.display.HTML at 0x11053ce10>"
    }
    ],
    "prompt_number": 78
    "prompt_number": 51
    }
    ],
    "metadata": {}
  4. msund revised this gist May 6, 2014. 1 changed file with 5 additions and 0 deletions.
    5 changes: 5 additions & 0 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -27,6 +27,11 @@
    "outputs": [],
    "prompt_number": 35
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "You can use our public key and username or sign up for an account on [Plotly](plot.ly/ssi). Plotly is free for public use, you own your data, and you control the privacy. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
  5. msund revised this gist May 6, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion Graphing
    Original file line number Diff line number Diff line change
    @@ -16,7 +16,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly is collaborative, makes beautiful interactive graphs with a URL for you, and stores your data and graphs together. This NB shows how to use Plotly to share plots from some awesome Python libraries. For best results, you can copy and paste this Notebook and key. Just run `$ pip install plotly` and start up a Notebook. \n\nLet's set up our environment and packages."
    "source": "Plotly is collaborative, makes beautiful interactive graphs with a URL for you, and stores your data and graphs together. This NB shows how to use Plotly to share plots from some awesome Python libraries. The matplotlylib project is a collaboration with [mpld3](http://mpld3.github.io/index.html) and [Jake Vanderplas](https://github.com/jakevdp).\n\nFor best results, you can copy and paste this Notebook and key. Just run `$ pip install plotly` and start up a Notebook. Let's set up our environment and packages."
    },
    {
    "cell_type": "code",
  6. msund revised this gist May 6, 2014. 1 changed file with 8 additions and 3 deletions.
    11 changes: 8 additions & 3 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "21 Interactive Plots from matplotlib, prettyplotlib, Stack Overflow, and seaborn"
    "source": "21 Interactive Plots from matplotlib, ggplot for Python, prettyplotlib, Stack Overflow, and seaborn"
    },
    {
    "cell_type": "markdown",
    @@ -75,7 +75,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly also reads the label types in this [damped oscillation](http://matplotlib.org/examples/pylab_examples/legend_demo2.html) graph."
    "source": "Let's get started with this [damped oscillation](http://matplotlib.org/examples/pylab_examples/legend_demo2.html) graph."
    },
    {
    "cell_type": "code",
    @@ -467,6 +467,11 @@
    ],
    "prompt_number": 58
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Histograms are also fun to hover over to get the exact data. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    @@ -520,7 +525,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "You can also use more advanced plotting types in collaboration with pandas. Just add a geom."
    "source": "You can also use more advanced plotting types in collaboration with pandas. You can add a geom."
    },
    {
    "cell_type": "code",
  7. msund revised this gist May 6, 2014. 1 changed file with 305 additions and 94 deletions.
    399 changes: 305 additions & 94 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -11,12 +11,12 @@
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "17 Interactive Plots from matplotlib, prettyplotlib, Stack Overflow, and seaborn"
    "source": "21 Interactive Plots from matplotlib, prettyplotlib, Stack Overflow, and seaborn"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "In this Notebook, we'll create interactive Plotly graphs from different Python libraries. Plotly is collaborative, makes beautiful interactive graphs with a URL for you, and stores your data and graphs together. You can also always access the data from your graphs or any public Plotly graph. And it's free.\n\nFor a full walk-through and documentation, check out our [getting started Notebook](http://nbviewer.ipython.org/github/etpinard/plotly-python-doc/blob/1.0/s0_getting-started/s0_getting-started.ipynb). Let's set up our environment and packages.\n\nFor best results, you can copy and paste this Notebook and key. Just run `$ pip install plotly` and start up a Notebook. "
    "source": "Plotly is collaborative, makes beautiful interactive graphs with a URL for you, and stores your data and graphs together. This NB shows how to use Plotly to share plots from some awesome Python libraries. For best results, you can copy and paste this Notebook and key. Just run `$ pip install plotly` and start up a Notebook. \n\nLet's set up our environment and packages."
    },
    {
    "cell_type": "code",
    @@ -25,7 +25,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 5
    "prompt_number": 35
    },
    {
    "cell_type": "code",
    @@ -34,7 +34,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 6
    "prompt_number": 36
    },
    {
    "cell_type": "code",
    @@ -43,7 +43,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 7
    "prompt_number": 37
    },
    {
    "cell_type": "code",
    @@ -55,11 +55,11 @@
    {
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 8,
    "prompt_number": 38,
    "text": "'1.0.0'"
    }
    ],
    "prompt_number": 8
    "prompt_number": 38
    },
    {
    "cell_type": "heading",
    @@ -80,29 +80,44 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig1 = plt.figure()\n# Make a legend for specific lines.\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n\nt1 = np.arange(0.0, 2.0, 0.1)\nt2 = 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\nl1, = plt.plot(t2, np.exp(-t2))\nl2, l3 = plt.plot(t2, np.sin(2 * np.pi * t2), '--go', t1, np.log(1 + t1), '.')\nl4, = plt.plot(t2, np.exp(-t2) * np.sin(2 * np.pi * t2), 'rs-.')\n\nplt.xlabel('time')\nplt.ylabel('volts')\nplt.title('Damped oscillation')\n\nplt.show()\npy.iplot_mpl(fig1)",
    "input": "fig1 = plt.figure()\n# Make a legend for specific lines.\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n\nt1 = np.arange(0.0, 2.0, 0.1)\nt2 = 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\nl1, = plt.plot(t2, np.exp(-t2))\nl2, l3 = plt.plot(t2, np.sin(2 * np.pi * t2), '--go', t1, np.log(1 + t1), '.')\nl4, = plt.plot(t2, np.exp(-t2) * np.sin(2 * np.pi * t2), 'rs-.')\n\nplt.xlabel('time')\nplt.ylabel('volts')\nplt.title('Damped oscillation')\n\nplt.show()",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "metadata": {},
    "output_type": "display_data",
    "png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEZCAYAAABrUHmEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXt8FOW5+L+bANlEIOEe7ksiNcSASbiJIglaBE1Rq1LE\nqqDWUooEj1VPexQZrK0W6ymXWo6n8jO0iD2KhQJRJCIBAblIEhEIaoPL/RICCbckhmR+f8zuZvaW\n7CabveX55jOfndvOvjN5Zp55n9trUFVVRRAEQRA8ICLQDRAEQRBCB1EagiAIgseI0hAEQRA8RpSG\nIAiC4DGiNARBEASPEaUhCIIgeIwoDUFoImazmYiICOrq6vzye3feeSd///vfAcjJyeGWW26xbYuI\niODQoUNNOu4777zD+PHjfdJGIfwRpSEEFJPJRExMDB07dqR///7ceuutrFy5MtDNCko+/PBDHn74\n4WYdw5Wi++lPf8rHH3/c3OYJrQRRGkJAMRgMrFu3jgsXLvDBBx9w44038tRTT/HMM88EumlhjeT0\nCk1FlIYQNAwbNozf//73zJs3jwULFvDvf/8bgNzcXNLS0oiNjWXcuHH87W9/s33H+ua8cuVKkpKS\nGDBgAO+++y7FxcWMHj2aAQMGsHDhQtv+OTk5jB49mhdeeIFevXoxefJkiouLbdsrKytZunQpI0aM\nYPTo0bz//vu2B6yqqqxYsYLk5GRSU1PZsmVLg+dz/PhxXnjhBUwmE48++iiFhYW2bVu3buWOO+6g\nc+fO9OnTh9dff922bc+ePcyYMYPu3btz7bXXsmHDBgAyMzNZunRpo9exoes1ZswYAOLi4ujYsSM7\nduxwMnV98803ZGdn069fP2bPns23335r25aZmcmrr77K+PHj6dmzJ08//TTl5eWNtkkII1RBCCAm\nk0nduHGj3brS0lK1TZs26j/+8Q9VVVU1Pz9f3bdvn3r16lV1/fr1aocOHdRvv/1WVVVV/e6771SD\nwaA++OCD6vHjx9W3335bveaaa9SsrCy1qKhI/fLLL9WOHTuqR44cUVVVVd9++221bdu26q9+9Sv1\nzJkz6quvvqr26tXL9tv/8R//oT7wwAPqd999pxYVFakpKSnqhg0bVFVV1bVr16oJCQnqZ599pn75\n5ZfqyJEj1YiICLW2ttbluY0ZM0Z98skn1TNnzqhLly5VO3bsqFZWVqqqqqrDhg1TV61apdbW1qrl\n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\n",
    "text": "<matplotlib.figure.Figure at 0x106257450>"
    },
    "text": "<matplotlib.figure.Figure at 0x11091ab90>"
    }
    ],
    "prompt_number": 39
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Now, to convert it to a Plotly figure, this is all it takes:"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "py.iplot_mpl(fig1)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3389\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3486\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x106316390>"
    "text": "<IPython.core.display.HTML at 0x10f07f190>"
    }
    ],
    "prompt_number": 9
    "prompt_number": 40
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Notice the difference. You can hover, zoom, and pan on the figure. You can also strip out the matplotlib styling, and use Plotly's default styling."
    "source": "You can hover, zoom, and pan on the figure. You can also strip out the matplotlib styling, and use Plotly's default styling."
    },
    {
    "cell_type": "code",
    @@ -112,13 +127,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3390\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3487\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x106332f10>"
    "text": "<IPython.core.display.HTML at 0x1108e6390>"
    }
    ],
    "prompt_number": 10
    "prompt_number": 41
    },
    {
    "cell_type": "markdown",
    @@ -133,13 +148,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3391\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3488\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1063d4950>"
    "text": "<IPython.core.display.HTML at 0x10f144390>"
    }
    ],
    "prompt_number": 11
    "prompt_number": 42
    },
    {
    "cell_type": "markdown",
    @@ -156,11 +171,11 @@
    {
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 12,
    "prompt_number": 43,
    "text": "[{'name': '_line0',\n 'x': [0.0,\n 0.20000000000000001,\n 0.40000000000000002,\n 0.60000000000000009,\n 0.80000000000000004,\n 1.0,\n 1.2000000000000002,\n 1.4000000000000001,\n 1.6000000000000001,\n 1.8,\n 2.0,\n 2.2000000000000002,\n 2.4000000000000004,\n 2.6000000000000001,\n 2.8000000000000003,\n 3.0,\n 3.2000000000000002,\n 3.4000000000000004,\n 3.6000000000000001,\n 3.8000000000000003,\n 4.0,\n 4.2000000000000002,\n 4.4000000000000004,\n 4.6000000000000005,\n 4.8000000000000007],\n 'y': [1.0,\n 0.25300171651849518,\n -0.54230030891302927,\n -0.44399794031078654,\n 0.13885028597711233,\n 0.36787944117144233,\n 0.09307413008823949,\n -0.19950113459002566,\n -0.16333771416280363,\n 0.051080165611754998,\n 0.1353352832366127,\n 0.034240058964379601,\n -0.073392365906047419,\n -0.060088587008433003,\n 0.018791342780197139,\n 0.049787068367863944,\n 0.012596213757493282,\n -0.026999542555766767,\n -0.022105355809443925,\n 0.0069129486808399343,\n 0.018315638888734179,\n 0.0046338880779826647,\n -0.0099325766273000524,\n -0.0081321059420741033,\n 0.0025431316975542792]}]"
    }
    ],
    "prompt_number": 12
    "prompt_number": 43
    },
    {
    "cell_type": "markdown",
    @@ -174,7 +189,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 13
    "prompt_number": 44
    },
    {
    "cell_type": "code",
    @@ -189,7 +204,7 @@
    "text": "Figure(\n data=Data([\n Scatter(\n x=[0.0, 0.2, 0.4, 0.6000000000000001, 0.8, 1.0, 1.2000000000000...],\n y=[1.0, 0.2530017165184952, -0.5423003089130293, -0.44399794031...],\n name='_line0',\n mode='markers',\n marker=Marker(\n symbol='dot',\n line=Line(\n color='#000000',\n width=0.5\n ),\n size=30,\n color='#0000FF',\n opacity=1\n )\n )\n ]),\n layout=Layout(\n xaxis=XAxis(\n domain=[0.0, 1.0],\n range=[0.0, 5.0],\n showline=True,\n ticks='inside',\n showgrid=False,\n zeroline=False,\n anchor='y',\n mirror=True\n ),\n yaxis=YAxis(\n domain=[0.0, 1.0],\n range=[-0.6000000000000001, 1.2],\n showline=True,\n ticks='inside',\n showgrid=False,\n zeroline=False,\n anchor='x',\n mirror=True\n ),\n hovermode='closest',\n showlegend=False\n )\n)\n"
    }
    ],
    "prompt_number": 14
    "prompt_number": 45
    },
    {
    "cell_type": "markdown",
    @@ -207,11 +222,11 @@
    "html": "<img src=\"https://i.imgur.com/RusH4k2.png?1\"/>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 15,
    "text": "<IPython.core.display.Image at 0x106332810>"
    "prompt_number": 46,
    "text": "<IPython.core.display.Image at 0x10f098a90>"
    }
    ],
    "prompt_number": 15
    "prompt_number": 46
    },
    {
    "cell_type": "markdown",
    @@ -229,10 +244,10 @@
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/1307\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x106250c10>"
    "text": "<IPython.core.display.HTML at 0x10f0985d0>"
    }
    ],
    "prompt_number": 16
    "prompt_number": 47
    },
    {
    "cell_type": "markdown",
    @@ -250,11 +265,11 @@
    "html": "<br><center><iframe class=\"vine-embed\" src=\"https://vine.co/v/Mvzin6HZzLB/embed/simple\" width=\"600\" height=\"600\" frameborder=\"0\"></iframe><script async src=\"//platform.vine.co/static/scripts/embed.js\" charset=\"utf-8\"></script></center><br>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 17,
    "text": "<IPython.core.display.HTML at 0x106332b90>"
    "prompt_number": 48,
    "text": "<IPython.core.display.HTML at 0x10f098b10>"
    }
    ],
    "prompt_number": 17
    "prompt_number": 48
    },
    {
    "cell_type": "markdown",
    @@ -269,13 +284,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3392\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3489\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1063f5310>"
    "text": "<IPython.core.display.HTML at 0x110939e90>"
    }
    ],
    "prompt_number": 18
    "prompt_number": 49
    },
    {
    "cell_type": "markdown",
    @@ -290,13 +305,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3393\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3490\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1068c4650>"
    "text": "<IPython.core.display.HTML at 0x110d22510>"
    }
    ],
    "prompt_number": 19
    "prompt_number": 50
    },
    {
    "cell_type": "markdown",
    @@ -316,13 +331,13 @@
    "text": "mean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\n"
    },
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3394\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3491\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1068fed50>"
    "text": "<IPython.core.display.HTML at 0x10f073250>"
    }
    ],
    "prompt_number": 20
    "prompt_number": 51
    },
    {
    "cell_type": "markdown",
    @@ -337,124 +352,209 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3395\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3492\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1068bf090>"
    "text": "<IPython.core.display.HTML at 0x1108f6e50>"
    }
    ],
    "prompt_number": 52
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Want to see more matplotlylib graphs? Head over to our [API](https://plot.ly/python) and copy and paste away."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/HEJEnjQ.png')",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<img src=\"https://i.imgur.com/HEJEnjQ.png\"/>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 53,
    "text": "<IPython.core.display.Image at 0x10f668090>"
    }
    ],
    "prompt_number": 21
    "prompt_number": 53
    },
    {
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "II. Stack Overflow Answers"
    "source": "II. ggplot for Python"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "An exciting package by [Greg Lamp](https://github.com/glamp) and the team at [\u0177hat](https://yhathq.com/) is [ggplot for Python](https://github.com/yhat/ggplot). You can draw figures with ggplot's wonderful syntax and share them with Plotly. You'll want to run `$ pip install ggplot` to get started."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from ggplot import *",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 54
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "We'll start out with a plot from the diamonds dataset. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "a = ggplot(aes(x='price'), data=diamonds) + geom_histogram() + facet_wrap(\"cut\") ",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 55
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "We love Stack Overflow, so wanted to show answers to a few questions from there, in Plotly. If you want to plot data you already have as a [histogram](http://stackoverflow.com/questions/5328556/histogram-matplotlib) and make it interactive, try this one out."
    "source": "Then share it to Plotly."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig7 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nmu, sigma = 100, 15\nx = mu + sigma * np.random.randn(10000)\nhist, bins = np.histogram(x, bins=50)\nwidth = 0.7 * (bins[1] - bins[0])\ncenter = (bins[:-1] + bins[1:]) / 2\nplt.bar(center, hist, align='center', width=width)\n\npy.iplot_mpl(fig7, strip_style = True)",
    "input": "fig = a.draw() \npy.iplot_mpl(fig, strip_style=True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3396\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3493\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1063e12d0>"
    "text": "<IPython.core.display.HTML at 0x1109693d0>"
    }
    ],
    "prompt_number": 22
    "prompt_number": 56
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Here is how to create a [density plot](http://stackoverflow.com/questions/4150171/how-to-create-a-density-plot-in-matplotlib/4152016#4152016) like you might in R, but in matplotlib."
    "source": "Line charts can be interactive (drag your mouse along the line to see the data on the hover)."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "b = ggplot(aes(x='date', y='beef'), data=meat) + \\\n geom_line() ",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 57
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig8 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom scipy.stats import gaussian_kde\ndata = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8\ndensity = gaussian_kde(data)\nxs = np.linspace(0,8,200)\ndensity.covariance_factor = lambda : .25\ndensity._compute_covariance()\nplt.plot(xs,density(xs))\n\npy.iplot_mpl(fig8, strip_style = True)",
    "input": "fig = b.draw() \npy.iplot_mpl(fig)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3397\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3494\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e6b6a10>"
    "text": "<IPython.core.display.HTML at 0x10f0d9690>"
    }
    ],
    "prompt_number": 23
    "prompt_number": 58
    },
    {
    "cell_type": "markdown",
    "cell_type": "code",
    "collapsed": false,
    "input": "c = ggplot(aes(x='price'), data=diamonds) + geom_histogram() + ggtitle('My Diamond Histogram')",
    "language": "python",
    "metadata": {},
    "source": "Drawing a simple example of [different lines for different plots](http://stackoverflow.com/questions/4805048/how-to-get-different-lines-for-different-plots-in-a-single-figure/4805456#4805456) looks like this..."
    "outputs": [],
    "prompt_number": 59
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig9 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nx = np.arange(10)\n\nplt.plot(x, x)\nplt.plot(x, 2 * x)\nplt.plot(x, 3 * x)\nplt.plot(x, 4 * x)\n\npy.iplot_mpl(fig9, strip_style = True)",
    "input": "fig = c.draw() \npy.iplot_mpl(fig, strip_style=True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3398\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3495\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10eaa6450>"
    "text": "<IPython.core.display.HTML at 0x1109b3750>"
    }
    ],
    "prompt_number": 24
    "prompt_number": 60
    },
    {
    "cell_type": "markdown",
    "cell_type": "code",
    "collapsed": false,
    "input": "d = ggplot(aes(x='x', y='y', color='z'), data=diamonds.head(1000)) +\\\n geom_point() ",
    "language": "python",
    "metadata": {},
    "source": "...and can get more exciting like this."
    "outputs": [],
    "prompt_number": 61
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig10 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nnum_plots = 10\n\n# Have a look at the colormaps here and decide which one you'd like:\n# http://matplotlib.org/1.2.1/examples/pylab_examples/show_colormaps.html\ncolormap = plt.cm.gist_ncar\nplt.gca().set_color_cycle([colormap(i) for i in np.linspace(0, 0.9, num_plots)])\n\n# Plot several different functions...\nx = np.arange(10)\nlabels = []\nfor i in range(1, num_plots + 1):\n plt.plot(x, i * x + 5 * i)\n labels.append(r'$y = %ix + %i$' % (i, 5*i))\n\npy.iplot_mpl(fig10, strip_style = True)",
    "input": "fig = d.draw() \npy.iplot_mpl(fig, strip_style=True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3399\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3496\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10ed9c450>"
    "text": "<IPython.core.display.HTML at 0x1109379d0>"
    }
    ],
    "prompt_number": 25
    "prompt_number": 62
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly also lets you draw [variables as subscripts in math mode](http://stackoverflow.com/questions/23276918/writing-variables-as-subscripts-in-math-mode)."
    "source": "You can also use more advanced plotting types in collaboration with pandas. Just add a geom."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "import pandas as pd",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 63
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig11 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport matplotlib.mlab as mlab\n\nmean = [10,12,16,22,25]\nvariance = [3,6,8,10,12]\n\nx = np.linspace(0,40,1000)\n\nfor i in range(4):\n sigma = np.sqrt(variance[i])\n y = mlab.normpdf(x,mean[i],sigma)\n plt.plot(x,y, label=r'$v_{}$'.format(i+1))\n\nplt.xlabel(\"X\")\nplt.ylabel(\"P(X)\") \n\npy.iplot_mpl(fig11, strip_style = True)",
    "input": "random_walk1 = pd.DataFrame({\n \"x\": np.arange(100),\n \"y\": np.cumsum(np.random.choice([-1, 1], 100))\n})\nrandom_walk2 = pd.DataFrame({\n \"x\": np.arange(100),\n \"y\": np.cumsum(np.random.choice([-1, 1], 100))\n})\ne = ggplot(aes(x='x', y='y'), data=random_walk1) + \\\n geom_step() + \\\n geom_step(aes(x='x', y='y'), data=random_walk2)",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 64
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig = e.draw() \npy.iplot_mpl(fig, strip_style=True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3400\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3497\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10ef9afd0>"
    "text": "<IPython.core.display.HTML at 0x1061c8d10>"
    }
    ],
    "prompt_number": 26
    "prompt_number": 65
    },
    {
    "cell_type": "heading",
    @@ -465,7 +565,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "The gallery of [examples](http://nbviewer.ipython.org/github/olgabot/prettyplotlib/blob/master/ipython_notebooks/Examples%20of%20everything%20pretty%20and%20plotted!.ipynb?create=1) we really like from [prettyplotlib](https://github.com/olgabot/prettyplotlib) can be a fun one to make interactive. Here's a scatter; let us know if you make others. You'll note that not all elements of the styling come through. "
    "source": "The gallery of [examples](http://nbviewer.ipython.org/github/olgabot/prettyplotlib/blob/master/ipython_notebooks/Examples%20of%20everything%20pretty%20and%20plotted!.ipynb?create=1) from [prettyplotlib](https://github.com/olgabot/prettyplotlib), a library by [Olga Botvinnik](https://github.com/olgabot), can be a fun one to make interactive. Here's a scatter; let us know if you make others. You'll note that not all elements of the styling come through. "
    },
    {
    "cell_type": "code",
    @@ -475,13 +575,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3401\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3498\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10eaaa990>"
    "text": "<IPython.core.display.HTML at 0x10f1d7210>"
    }
    ],
    "prompt_number": 27
    "prompt_number": 66
    },
    {
    "cell_type": "markdown",
    @@ -496,13 +596,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3402\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3499\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f00ba90>"
    "text": "<IPython.core.display.HTML at 0x10fd5d550>"
    }
    ],
    "prompt_number": 28
    "prompt_number": 67
    },
    {
    "cell_type": "heading",
    @@ -522,7 +622,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 29
    "prompt_number": 68
    },
    {
    "cell_type": "code",
    @@ -531,23 +631,23 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 30
    "prompt_number": 69
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig14 = plt.figure()\n\nsns.set_style(\"dark\")\nsinplot()\n\npy.iplot_mpl(fig15, strip_style = True)",
    "input": "fig14 = plt.figure()\n\nsns.set_style(\"dark\")\nsinplot()\n\npy.iplot_mpl(fig14, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3403\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3500\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10ef99e10>"
    "text": "<IPython.core.display.HTML at 0x111e96650>"
    }
    ],
    "prompt_number": 31
    "prompt_number": 70
    },
    {
    "cell_type": "markdown",
    @@ -557,18 +657,18 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig16 = plt.figure()\n\nwith sns.axes_style(\"darkgrid\"):\n plt.subplot(211)\n sinplot()\nplt.subplot(212)\nsinplot(-1)\n\npy.iplot_mpl(fig16, strip_style = True)",
    "input": "fig15 = plt.figure()\n\nwith sns.axes_style(\"darkgrid\"):\n plt.subplot(211)\n sinplot()\nplt.subplot(212)\nsinplot(-1)\n\npy.iplot_mpl(fig15, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3404\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3501\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110a99ed0>"
    "text": "<IPython.core.display.HTML at 0x10e81f890>"
    }
    ],
    "prompt_number": 32
    "prompt_number": 71
    },
    {
    "cell_type": "markdown",
    @@ -582,23 +682,134 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 33
    "prompt_number": 72
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig16 = plt.figure()\n\nsns.set_palette(\"hls\")\nmpl.rc(\"figure\", figsize=(8, 4))\ndata = randn(200)\nsns.distplot(data);\n\npy.iplot_mpl(fig16, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3502\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10fd75490>"
    }
    ],
    "prompt_number": 73
    },
    {
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "V. Stack Overflow Answers"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "We love Stack Overflow, so wanted answer a few questions from there, in Plotly. If you want to plot data you already have as a [histogram](http://stackoverflow.com/questions/5328556/histogram-matplotlib) and make it interactive, try this one out."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig17 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nmu, sigma = 100, 15\nx = mu + sigma * np.random.randn(10000)\nhist, bins = np.histogram(x, bins=50)\nwidth = 0.7 * (bins[1] - bins[0])\ncenter = (bins[:-1] + bins[1:]) / 2\nplt.bar(center, hist, align='center', width=width)\n\npy.iplot_mpl(fig17, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3503\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f5c0250>"
    }
    ],
    "prompt_number": 74
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Here is how to create a [density plot](http://stackoverflow.com/questions/4150171/how-to-create-a-density-plot-in-matplotlib/4152016#4152016) like you might in R, but in matplotlib."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig18 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom scipy.stats import gaussian_kde\ndata = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8\ndensity = gaussian_kde(data)\nxs = np.linspace(0,8,200)\ndensity.covariance_factor = lambda : .25\ndensity._compute_covariance()\nplt.plot(xs,density(xs))\n\npy.iplot_mpl(fig18, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3504\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f55cd10>"
    }
    ],
    "prompt_number": 75
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Drawing a simple example of [different lines for different plots](http://stackoverflow.com/questions/4805048/how-to-get-different-lines-for-different-plots-in-a-single-figure/4805456#4805456) looks like this..."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig19 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nx = np.arange(10)\n\nplt.plot(x, x)\nplt.plot(x, 2 * x)\nplt.plot(x, 3 * x)\nplt.plot(x, 4 * x)\n\npy.iplot_mpl(fig19, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3505\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10fd63190>"
    }
    ],
    "prompt_number": 76
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "...and can get more exciting like this."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig20 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nnum_plots = 10\n\n# Have a look at the colormaps here and decide which one you'd like:\n# http://matplotlib.org/1.2.1/examples/pylab_examples/show_colormaps.html\ncolormap = plt.cm.gist_ncar\nplt.gca().set_color_cycle([colormap(i) for i in np.linspace(0, 0.9, num_plots)])\n\n# Plot several different functions...\nx = np.arange(10)\nlabels = []\nfor i in range(1, num_plots + 1):\n plt.plot(x, i * x + 5 * i)\n labels.append(r'$y = %ix + %i$' % (i, 5*i))\n\npy.iplot_mpl(fig20, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3506\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1108bde90>"
    }
    ],
    "prompt_number": 77
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly also lets you draw [variables as subscripts in math mode](http://stackoverflow.com/questions/23276918/writing-variables-as-subscripts-in-math-mode)."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig17 = plt.figure()\n\nsns.set_palette(\"hls\")\nmpl.rc(\"figure\", figsize=(8, 4))\ndata = randn(200)\nsns.distplot(data);\n\npy.iplot_mpl(fig17, strip_style = True)",
    "input": "fig21 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport matplotlib.mlab as mlab\n\nmean = [10,12,16,22,25]\nvariance = [3,6,8,10,12]\n\nx = np.linspace(0,40,1000)\n\nfor i in range(4):\n sigma = np.sqrt(variance[i])\n y = mlab.normpdf(x,mean[i],sigma)\n plt.plot(x,y, label=r'$v_{}$'.format(i+1))\n\nplt.xlabel(\"X\")\nplt.ylabel(\"P(X)\") \n\npy.iplot_mpl(fig21, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3405\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3507\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x11095bc10>"
    "text": "<IPython.core.display.HTML at 0x10f488510>"
    }
    ],
    "prompt_number": 34
    "prompt_number": 78
    }
    ],
    "metadata": {}
  8. msund revised this gist May 4, 2014. 1 changed file with 19 additions and 19 deletions.
    38 changes: 19 additions & 19 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "18 Interactive Plots from matplotlib, prettyplotlib, Stack Overflow, and seaborn"
    "source": "17 Interactive Plots from matplotlib, prettyplotlib, Stack Overflow, and seaborn"
    },
    {
    "cell_type": "markdown",
    @@ -80,7 +80,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig3 = plt.figure()\n# Make a legend for specific lines.\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n\nt1 = np.arange(0.0, 2.0, 0.1)\nt2 = 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\nl1, = plt.plot(t2, np.exp(-t2))\nl2, l3 = plt.plot(t2, np.sin(2 * np.pi * t2), '--go', t1, np.log(1 + t1), '.')\nl4, = plt.plot(t2, np.exp(-t2) * np.sin(2 * np.pi * t2), 'rs-.')\n\nplt.xlabel('time')\nplt.ylabel('volts')\nplt.title('Damped oscillation')\n\nplt.show()\npy.iplot_mpl(fig3)",
    "input": "fig1 = plt.figure()\n# Make a legend for specific lines.\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n\nt1 = np.arange(0.0, 2.0, 0.1)\nt2 = 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\nl1, = plt.plot(t2, np.exp(-t2))\nl2, l3 = plt.plot(t2, np.sin(2 * np.pi * t2), '--go', t1, np.log(1 + t1), '.')\nl4, = plt.plot(t2, np.exp(-t2) * np.sin(2 * np.pi * t2), 'rs-.')\n\nplt.xlabel('time')\nplt.ylabel('volts')\nplt.title('Damped oscillation')\n\nplt.show()\npy.iplot_mpl(fig1)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -107,7 +107,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig = tls.mpl_to_plotly(fig3)\nfig['layout'].update(showlegend=True)\nfig.strip_style()\npy.iplot(fig)",
    "input": "fig = tls.mpl_to_plotly(fig1)\nfig['layout'].update(showlegend=True)\nfig.strip_style()\npy.iplot(fig)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -128,7 +128,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig4 = plt.figure()\n\nfrom pylab import *\n\ndef f(t):\n 'a damped exponential'\n s1 = cos(2*pi*t)\n e1 = exp(-t)\n return multiply(s1,e1)\n\nt1 = arange(0.0, 5.0, .2)\n\n\nl = plot(t1, f(t1), 'ro')\nsetp(l, 'markersize', 30)\nsetp(l, 'markerfacecolor', 'b')\n\npy.iplot_mpl(fig4)",
    "input": "fig2 = plt.figure()\n\nfrom pylab import *\n\ndef f(t):\n 'a damped exponential'\n s1 = cos(2*pi*t)\n e1 = exp(-t)\n return multiply(s1,e1)\n\nt1 = arange(0.0, 5.0, .2)\n\n\nl = plot(t1, f(t1), 'ro')\nsetp(l, 'markersize', 30)\nsetp(l, 'markerfacecolor', 'b')\n\npy.iplot_mpl(fig2)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -149,7 +149,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "tls.mpl_to_plotly(fig4).get_data()",
    "input": "tls.mpl_to_plotly(fig2).get_data()",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -264,7 +264,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig5 = plt.figure()\n\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# make a little extra space between the subplots\nplt.subplots_adjust(wspace=0.5)\n\ndt = 0.01\nt = np.arange(0, 30, dt)\nnse1 = np.random.randn(len(t)) # white noise 1\nnse2 = np.random.randn(len(t)) # white noise 2\nr = np.exp(-t/0.05)\n\ncnse1 = np.convolve(nse1, r, mode='same')*dt # colored noise 1\ncnse2 = np.convolve(nse2, r, mode='same')*dt # colored noise 2\n\n# two signals with a coherent part and a random part\ns1 = 0.01*np.sin(2*np.pi*10*t) + cnse1\ns2 = 0.01*np.sin(2*np.pi*10*t) + cnse2\n\nplt.subplot(211)\nplt.plot(t, s1, 'b-', t, s2, 'g-')\nplt.xlim(0,5)\nplt.xlabel('time')\nplt.ylabel('s1 and s2')\nplt.grid(True)\n\nplt.subplot(212)\ncxy, f = plt.csd(s1, s2, 256, 1./dt)\nplt.ylabel('CSD (db)')\n\npy.iplot_mpl(fig5)",
    "input": "fig3 = plt.figure()\n\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# make a little extra space between the subplots\nplt.subplots_adjust(wspace=0.5)\n\ndt = 0.01\nt = np.arange(0, 30, dt)\nnse1 = np.random.randn(len(t)) # white noise 1\nnse2 = np.random.randn(len(t)) # white noise 2\nr = np.exp(-t/0.05)\n\ncnse1 = np.convolve(nse1, r, mode='same')*dt # colored noise 1\ncnse2 = np.convolve(nse2, r, mode='same')*dt # colored noise 2\n\n# two signals with a coherent part and a random part\ns1 = 0.01*np.sin(2*np.pi*10*t) + cnse1\ns2 = 0.01*np.sin(2*np.pi*10*t) + cnse2\n\nplt.subplot(211)\nplt.plot(t, s1, 'b-', t, s2, 'g-')\nplt.xlim(0,5)\nplt.xlabel('time')\nplt.ylabel('s1 and s2')\nplt.grid(True)\n\nplt.subplot(212)\ncxy, f = plt.csd(s1, s2, 256, 1./dt)\nplt.ylabel('CSD (db)')\n\npy.iplot_mpl(fig3)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -285,7 +285,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig6 = plt.figure()\n\nfrom pylab import figure, show\nfrom numpy import arange, sin, pi\n\nt = arange(0.0, 1.0, 0.01)\n\nfig = figure(1)\n\nax1 = fig.add_subplot(211)\nax1.plot(t, sin(2*pi*t))\nax1.grid(True)\nax1.set_ylim( (-2,2) )\nax1.set_ylabel('1 Hz')\nax1.set_title('A sine wave or two')\n\nfor label in ax1.get_xticklabels():\n label.set_color('r')\n\n\nax2 = fig.add_subplot(212)\nax2.plot(t, sin(2*2*pi*t))\nax2.grid(True)\nax2.set_ylim( (-2,2) )\nl = ax2.set_xlabel('Hi mom')\nl.set_color('g')\nl.set_fontsize('large')\n\npy.iplot_mpl(fig6, strip_style = True)",
    "input": "fig4 = plt.figure()\n\nfrom pylab import figure, show\nfrom numpy import arange, sin, pi\n\nt = arange(0.0, 1.0, 0.01)\n\nfig = figure(1)\n\nax1 = fig.add_subplot(211)\nax1.plot(t, sin(2*pi*t))\nax1.grid(True)\nax1.set_ylim( (-2,2) )\nax1.set_ylabel('1 Hz')\nax1.set_title('A sine wave or two')\n\nfor label in ax1.get_xticklabels():\n label.set_color('r')\n\n\nax2 = fig.add_subplot(212)\nax2.plot(t, sin(2*2*pi*t))\nax2.grid(True)\nax2.set_ylim( (-2,2) )\nl = ax2.set_xlabel('Hi mom')\nl.set_color('g')\nl.set_fontsize('large')\n\npy.iplot_mpl(fig4, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -306,7 +306,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig7 = plt.figure()\n\nfrom __future__ import print_function\n\"\"\"\nEdward Tufte uses this example from Anscombe to show 4 datasets of x\nand y that have the same mean, standard deviation, and regression\nline, but which are qualitatively different.\n\nmatplotlib fun for a rainy day\n\"\"\"\n\nfrom pylab import *\n\nx = array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])\ny1 = array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68])\ny2 = array([9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74])\ny3 = array([7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73])\nx4 = array([8,8,8,8,8,8,8,19,8,8,8])\ny4 = array([6.58,5.76,7.71,8.84,8.47,7.04,5.25,12.50,5.56,7.91,6.89])\n\ndef fit(x):\n return 3+0.5*x\n\n\n\nxfit = array( [amin(x), amax(x) ] )\n\nsubplot(221)\nplot(x,y1,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\nsetp(gca(), xticklabels=[], yticks=(4,8,12), xticks=(0,10,20))\ntext(3,12, 'I', fontsize=20)\n\nsubplot(222)\nplot(x,y2,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\nsetp(gca(), xticklabels=[], yticks=(4,8,12), yticklabels=[], xticks=(0,10,20))\ntext(3,12, 'II', fontsize=20)\n\nsubplot(223)\nplot(x,y3,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\ntext(3,12, 'III', fontsize=20)\nsetp(gca(), yticks=(4,8,12), xticks=(0,10,20))\n\nsubplot(224)\n\nxfit = array([amin(x4),amax(x4)])\nplot(x4,y4,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\nsetp(gca(), yticklabels=[], yticks=(4,8,12), xticks=(0,10,20))\ntext(3,12, 'IV', fontsize=20)\n\n#verify the stats\npairs = (x,y1), (x,y2), (x,y3), (x4,y4)\nfor x,y in pairs:\n print ('mean=%1.2f, std=%1.2f, r=%1.2f'%(mean(y), std(y), corrcoef(x,y)[0][1]))\n\npy.iplot_mpl(fig7, strip_style = True)",
    "input": "fig5 = plt.figure()\n\nfrom __future__ import print_function\n\"\"\"\nEdward Tufte uses this example from Anscombe to show 4 datasets of x\nand y that have the same mean, standard deviation, and regression\nline, but which are qualitatively different.\n\nmatplotlib fun for a rainy day\n\"\"\"\n\nfrom pylab import *\n\nx = array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])\ny1 = array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68])\ny2 = array([9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74])\ny3 = array([7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73])\nx4 = array([8,8,8,8,8,8,8,19,8,8,8])\ny4 = array([6.58,5.76,7.71,8.84,8.47,7.04,5.25,12.50,5.56,7.91,6.89])\n\ndef fit(x):\n return 3+0.5*x\n\n\n\nxfit = array( [amin(x), amax(x) ] )\n\nsubplot(221)\nplot(x,y1,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\nsetp(gca(), xticklabels=[], yticks=(4,8,12), xticks=(0,10,20))\ntext(3,12, 'I', fontsize=20)\n\nsubplot(222)\nplot(x,y2,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\nsetp(gca(), xticklabels=[], yticks=(4,8,12), yticklabels=[], xticks=(0,10,20))\ntext(3,12, 'II', fontsize=20)\n\nsubplot(223)\nplot(x,y3,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\ntext(3,12, 'III', fontsize=20)\nsetp(gca(), yticks=(4,8,12), xticks=(0,10,20))\n\nsubplot(224)\n\nxfit = array([amin(x4),amax(x4)])\nplot(x4,y4,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\nsetp(gca(), yticklabels=[], yticks=(4,8,12), xticks=(0,10,20))\ntext(3,12, 'IV', fontsize=20)\n\n#verify the stats\npairs = (x,y1), (x,y2), (x,y3), (x4,y4)\nfor x,y in pairs:\n print ('mean=%1.2f, std=%1.2f, r=%1.2f'%(mean(y), std(y), corrcoef(x,y)[0][1]))\n\npy.iplot_mpl(fig5, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -332,7 +332,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig8 = plt.figure()\n\nimport numpy as np\nimport matplotlib.mlab as mlab\nimport matplotlib.pyplot as plt\n\n\n# example data\nmu = 100 # mean of distribution\nsigma = 15 # standard deviation of distribution\nx = mu + sigma * np.random.randn(10000)\n\nnum_bins = 50\n# the histogram of the data\nn, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)\n# add a 'best fit' line\ny = mlab.normpdf(bins, mu, sigma)\nplt.plot(bins, y, 'r--')\nplt.xlabel('Smarts')\nplt.ylabel('Probability')\n\n# Tweak spacing to prevent clipping of ylabel\nplt.subplots_adjust(left=0.15)\n\npy.iplot_mpl(fig8, strip_style = True)",
    "input": "fig6 = plt.figure()\n\nimport numpy as np\nimport matplotlib.mlab as mlab\nimport matplotlib.pyplot as plt\n\n\n# example data\nmu = 100 # mean of distribution\nsigma = 15 # standard deviation of distribution\nx = mu + sigma * np.random.randn(10000)\n\nnum_bins = 50\n# the histogram of the data\nn, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)\n# add a 'best fit' line\ny = mlab.normpdf(bins, mu, sigma)\nplt.plot(bins, y, 'r--')\nplt.xlabel('Smarts')\nplt.ylabel('Probability')\n\n# Tweak spacing to prevent clipping of ylabel\nplt.subplots_adjust(left=0.15)\n\npy.iplot_mpl(fig6, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -359,7 +359,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig9 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nmu, sigma = 100, 15\nx = mu + sigma * np.random.randn(10000)\nhist, bins = np.histogram(x, bins=50)\nwidth = 0.7 * (bins[1] - bins[0])\ncenter = (bins[:-1] + bins[1:]) / 2\nplt.bar(center, hist, align='center', width=width)\n\npy.iplot_mpl(fig9, strip_style = True)",
    "input": "fig7 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nmu, sigma = 100, 15\nx = mu + sigma * np.random.randn(10000)\nhist, bins = np.histogram(x, bins=50)\nwidth = 0.7 * (bins[1] - bins[0])\ncenter = (bins[:-1] + bins[1:]) / 2\nplt.bar(center, hist, align='center', width=width)\n\npy.iplot_mpl(fig7, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -380,7 +380,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig10 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom scipy.stats import gaussian_kde\ndata = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8\ndensity = gaussian_kde(data)\nxs = np.linspace(0,8,200)\ndensity.covariance_factor = lambda : .25\ndensity._compute_covariance()\nplt.plot(xs,density(xs))\n\npy.iplot_mpl(fig10, strip_style = True)",
    "input": "fig8 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom scipy.stats import gaussian_kde\ndata = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8\ndensity = gaussian_kde(data)\nxs = np.linspace(0,8,200)\ndensity.covariance_factor = lambda : .25\ndensity._compute_covariance()\nplt.plot(xs,density(xs))\n\npy.iplot_mpl(fig8, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -401,7 +401,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig11 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nx = np.arange(10)\n\nplt.plot(x, x)\nplt.plot(x, 2 * x)\nplt.plot(x, 3 * x)\nplt.plot(x, 4 * x)\n\npy.iplot_mpl(fig11, strip_style = True)",
    "input": "fig9 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nx = np.arange(10)\n\nplt.plot(x, x)\nplt.plot(x, 2 * x)\nplt.plot(x, 3 * x)\nplt.plot(x, 4 * x)\n\npy.iplot_mpl(fig9, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -422,7 +422,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig12 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nnum_plots = 10\n\n# Have a look at the colormaps here and decide which one you'd like:\n# http://matplotlib.org/1.2.1/examples/pylab_examples/show_colormaps.html\ncolormap = plt.cm.gist_ncar\nplt.gca().set_color_cycle([colormap(i) for i in np.linspace(0, 0.9, num_plots)])\n\n# Plot several different functions...\nx = np.arange(10)\nlabels = []\nfor i in range(1, num_plots + 1):\n plt.plot(x, i * x + 5 * i)\n labels.append(r'$y = %ix + %i$' % (i, 5*i))\n\npy.iplot_mpl(fig12, strip_style = True)",
    "input": "fig10 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nnum_plots = 10\n\n# Have a look at the colormaps here and decide which one you'd like:\n# http://matplotlib.org/1.2.1/examples/pylab_examples/show_colormaps.html\ncolormap = plt.cm.gist_ncar\nplt.gca().set_color_cycle([colormap(i) for i in np.linspace(0, 0.9, num_plots)])\n\n# Plot several different functions...\nx = np.arange(10)\nlabels = []\nfor i in range(1, num_plots + 1):\n plt.plot(x, i * x + 5 * i)\n labels.append(r'$y = %ix + %i$' % (i, 5*i))\n\npy.iplot_mpl(fig10, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -443,7 +443,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig13 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport matplotlib.mlab as mlab\n\nmean = [10,12,16,22,25]\nvariance = [3,6,8,10,12]\n\nx = np.linspace(0,40,1000)\n\nfor i in range(4):\n sigma = np.sqrt(variance[i])\n y = mlab.normpdf(x,mean[i],sigma)\n plt.plot(x,y, label=r'$v_{}$'.format(i+1))\n\nplt.xlabel(\"X\")\nplt.ylabel(\"P(X)\") \n\npy.iplot_mpl(fig13, strip_style = True)",
    "input": "fig11 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport matplotlib.mlab as mlab\n\nmean = [10,12,16,22,25]\nvariance = [3,6,8,10,12]\n\nx = np.linspace(0,40,1000)\n\nfor i in range(4):\n sigma = np.sqrt(variance[i])\n y = mlab.normpdf(x,mean[i],sigma)\n plt.plot(x,y, label=r'$v_{}$'.format(i+1))\n\nplt.xlabel(\"X\")\nplt.ylabel(\"P(X)\") \n\npy.iplot_mpl(fig11, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -470,7 +470,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig14 = plt.figure()\n\nimport prettyplotlib as ppl\n\n# Set the random seed for consistency\nnp.random.seed(12)\n\n# Show the whole color range\nfor i in range(8):\n x = np.random.normal(loc=i, size=800)\n y = np.random.normal(loc=i, size=800)\n ax = ppl.scatter(x, y, label=str(i))\n \nppl.legend(ax)\nax.set_title('prettyplotlib `scatter`')\nax.legend().set_visible(False)\n\npy.iplot_mpl(fig14)",
    "input": "fig12 = plt.figure()\n\nimport prettyplotlib as ppl\n\n# Set the random seed for consistency\nnp.random.seed(12)\n\n# Show the whole color range\nfor i in range(8):\n x = np.random.normal(loc=i, size=800)\n y = np.random.normal(loc=i, size=800)\n ax = ppl.scatter(x, y, label=str(i))\n \nppl.legend(ax)\nax.set_title('prettyplotlib `scatter`')\nax.legend().set_visible(False)\n\npy.iplot_mpl(fig12)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -491,7 +491,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig15 = plt.figure()\n\nimport prettyplotlib as ppl\n\n# Set the random seed for consistency\nnp.random.seed(12)\n\n# Show the whole color range\nfor i in range(8):\n y = np.random.normal(size=1000).cumsum()\n x = np.arange(1000)\n\n # Specify both x and y\n ppl.plot(x, y, label=str(i), linewidth=0.75)\n \npy.iplot_mpl(fig15)",
    "input": "fig13 = plt.figure()\n\nimport prettyplotlib as ppl\n\n# Set the random seed for consistency\nnp.random.seed(12)\n\n# Show the whole color range\nfor i in range(8):\n y = np.random.normal(size=1000).cumsum()\n x = np.arange(1000)\n\n # Specify both x and y\n ppl.plot(x, y, label=str(i), linewidth=0.75)\n \npy.iplot_mpl(fig13)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -536,7 +536,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig16 = plt.figure()\n\nsns.set_style(\"dark\")\nsinplot()\n\npy.iplot_mpl(fig16, strip_style = True)",
    "input": "fig14 = plt.figure()\n\nsns.set_style(\"dark\")\nsinplot()\n\npy.iplot_mpl(fig15, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -557,7 +557,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig17 = plt.figure()\n\nwith sns.axes_style(\"darkgrid\"):\n plt.subplot(211)\n sinplot()\nplt.subplot(212)\nsinplot(-1)\n\npy.iplot_mpl(fig17, strip_style = True)",
    "input": "fig16 = plt.figure()\n\nwith sns.axes_style(\"darkgrid\"):\n plt.subplot(211)\n sinplot()\nplt.subplot(212)\nsinplot(-1)\n\npy.iplot_mpl(fig16, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    @@ -587,7 +587,7 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig18 = plt.figure()\n\nsns.set_palette(\"hls\")\nmpl.rc(\"figure\", figsize=(8, 4))\ndata = randn(200)\nsns.distplot(data);\n\npy.iplot_mpl(fig18, strip_style = True)",
    "input": "fig17 = plt.figure()\n\nsns.set_palette(\"hls\")\nmpl.rc(\"figure\", figsize=(8, 4))\ndata = randn(200)\nsns.distplot(data);\n\npy.iplot_mpl(fig17, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
  9. msund revised this gist May 4, 2014. 1 changed file with 121 additions and 119 deletions.
    240 changes: 121 additions & 119 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -16,7 +16,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "In this Notebook, we'll create interactive Plotly graphs from different Python libraries. It's easy, lets you collaborate, makes a D3 graph with a URL for you, and stores your data and graphs together. You can also always access the data from your graphs or any public Plotly graph. For a full walk-through and documentation, check out our [getting started Notebook](http://nbviewer.ipython.org/github/etpinard/plotly-python-doc/blob/1.0/s0_getting-started/s0_getting-started.ipynb). Let's set up our environment and packages."
    "source": "In this Notebook, we'll create interactive Plotly graphs from different Python libraries. Plotly is collaborative, makes beautiful interactive graphs with a URL for you, and stores your data and graphs together. You can also always access the data from your graphs or any public Plotly graph. And it's free.\n\nFor a full walk-through and documentation, check out our [getting started Notebook](http://nbviewer.ipython.org/github/etpinard/plotly-python-doc/blob/1.0/s0_getting-started/s0_getting-started.ipynb). Let's set up our environment and packages.\n\nFor best results, you can copy and paste this Notebook and key. Just run `$ pip install plotly` and start up a Notebook. "
    },
    {
    "cell_type": "code",
    @@ -25,16 +25,16 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 1
    "prompt_number": 5
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "import plotly.plotly as py\nimport plotly.tools as tls\nfrom plotly.graph_objs import *\n# py.sign_in(\"IPython.Demo\", \"1fw3zw2o13\")",
    "input": "import plotly.plotly as py\nimport plotly.tools as tls\nfrom plotly.graph_objs import *\npy.sign_in(\"IPython.Demo\", \"1fw3zw2o13\")",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 2
    "prompt_number": 6
    },
    {
    "cell_type": "code",
    @@ -43,7 +43,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 3
    "prompt_number": 7
    },
    {
    "cell_type": "code",
    @@ -55,204 +55,206 @@
    {
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 4,
    "prompt_number": 8,
    "text": "'1.0.0'"
    }
    ],
    "prompt_number": 4
    "prompt_number": 8
    },
    {
    "cell_type": "heading",
    "level": 2,
    "level": 1,
    "metadata": {},
    "source": "I. Plotly for Teaching: Software Carpentry Notebook"
    "source": "I. matplotlib Gallery graphs"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "These first two are drawn from the [Software Carpentry repo](http://nbviewer.ipython.org/github/swcarpentry/notebooks/blob/master/matplotlib.ipynb). First, we'll draw a matplotlib figure and show both the matplotlib figure and the Plotly graph."
    "source": "For matplotlib experts, you'll recognize these graphs from the [matplotlib gallery](matplotlib.org/gallery.html). \n\nIn addition to matplotlib and Plotly's own [Python API](https://plot.ly/python), You can also use Plotly's other [APIs](https://plot.ly/api) for MATLAB, R, Perl, Julia, and REST to write to graphs. That means you and I could edit the same graph with any language. We can even edit the graph and data from the GUI, so technical and non-technical teams can work together. And all the graphs go to your profile, like this: https://plot.ly/~IPython.Demo.\n\nYou control [the privacy](http://plot.ly/python/privacy) by setting `world_readable` to False or True, and can control your [sharing](http://plot.ly/python/file-sharing)."
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly also reads the label types in this [damped oscillation](http://matplotlib.org/examples/pylab_examples/legend_demo2.html) graph."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig1 = plt.figure()\n\n#generate some data\nx = np.array(range(20))\ny = 3 + 0.5 * x + np.random.randn(20)\n\n#plot the data\nplt.plot(x, y, 'bo')\n\n#generate a mpl figure and Plotly figure\nplt.show()\npy.iplot_mpl(fig1)",
    "input": "fig3 = plt.figure()\n# Make a legend for specific lines.\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n\nt1 = np.arange(0.0, 2.0, 0.1)\nt2 = 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\nl1, = plt.plot(t2, np.exp(-t2))\nl2, l3 = plt.plot(t2, np.sin(2 * np.pi * t2), '--go', t1, np.log(1 + t1), '.')\nl4, = plt.plot(t2, np.exp(-t2) * np.sin(2 * np.pi * t2), 'rs-.')\n\nplt.xlabel('time')\nplt.ylabel('volts')\nplt.title('Damped oscillation')\n\nplt.show()\npy.iplot_mpl(fig3)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "metadata": {},
    "output_type": "display_data",
    "png": "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\nGOz/Avh2jouZHyYAAAAASUVORK5CYII=\n",
    "text": "<matplotlib.figure.Figure at 0x1060cb6d0>"
    "png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEZCAYAAABrUHmEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXt8FOW5+L+bANlEIOEe7ksiNcSASbiJIglaBE1Rq1LE\nqqDWUooEj1VPexQZrK0W6ymXWo6n8jO0iD2KhQJRJCIBAblIEhEIaoPL/RICCbckhmR+f8zuZvaW\n7CabveX55jOfndvOvjN5Zp55n9trUFVVRRAEQRA8ICLQDRAEQRBCB1EagiAIgseI0hAEQRA8RpSG\nIAiC4DGiNARBEASPEaUhCIIgeIwoDUFoImazmYiICOrq6vzye3feeSd///vfAcjJyeGWW26xbYuI\niODQoUNNOu4777zD+PHjfdJGIfwRpSEEFJPJRExMDB07dqR///7ceuutrFy5MtDNCko+/PBDHn74\n4WYdw5Wi++lPf8rHH3/c3OYJrQRRGkJAMRgMrFu3jgsXLvDBBx9w44038tRTT/HMM88EumlhjeT0\nCk1FlIYQNAwbNozf//73zJs3jwULFvDvf/8bgNzcXNLS0oiNjWXcuHH87W9/s33H+ua8cuVKkpKS\nGDBgAO+++y7FxcWMHj2aAQMGsHDhQtv+OTk5jB49mhdeeIFevXoxefJkiouLbdsrKytZunQpI0aM\nYPTo0bz//vu2B6yqqqxYsYLk5GRSU1PZsmVLg+dz/PhxXnjhBUwmE48++iiFhYW2bVu3buWOO+6g\nc+fO9OnTh9dff922bc+ePcyYMYPu3btz7bXXsmHDBgAyMzNZunRpo9exoes1ZswYAOLi4ujYsSM7\nduxwMnV98803ZGdn069fP2bPns23335r25aZmcmrr77K+PHj6dmzJ08//TTl5eWNtkkII1RBCCAm\nk0nduHGj3brS0lK1TZs26j/+8Q9VVVU1Pz9f3bdvn3r16lV1/fr1aocOHdRvv/1WVVVV/e6771SD\nwaA++OCD6vHjx9W3335bveaaa9SsrCy1qKhI/fLLL9WOHTuqR44cUVVVVd9++221bdu26q9+9Sv1\nzJkz6quvvqr26tXL9tv/8R//oT7wwAPqd999pxYVFakpKSnqhg0bVFVV1bVr16oJCQnqZ599pn75\n5ZfqyJEj1YiICLW2ttbluY0ZM0Z98skn1TNnzqhLly5VO3bsqFZWVqqqqqrDhg1TV61apdbW1qrl\n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\n",
    "text": "<matplotlib.figure.Figure at 0x106257450>"
    },
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3353\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3389\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1060f93d0>"
    "text": "<IPython.core.display.HTML at 0x106316390>"
    }
    ],
    "prompt_number": 5
    "prompt_number": 9
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Now let's draw another figure. This time, we'll only print the converted Plotly version of the figure. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "x = np.array(range(20))\ny = 3 + 0.5 * x + np.random.randn(20)\nz = 2 + 0.9 * x + np.random.randn(20)",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 6
    "source": "Notice the difference. You can hover, zoom, and pan on the figure. You can also strip out the matplotlib styling, and use Plotly's default styling."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig2 = plt.figure()\n\n#plot the data\nplt.plot(x, y, 'bo')\nplt.hold(True)\nplt.plot(x, z, 'r^')\n\npy.iplot_mpl(fig2)",
    "input": "fig = tls.mpl_to_plotly(fig3)\nfig['layout'].update(showlegend=True)\nfig.strip_style()\npy.iplot(fig)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3354\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3390\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1061318d0>"
    "text": "<IPython.core.display.HTML at 0x106332f10>"
    }
    ],
    "prompt_number": 7
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "One special Plotly feature is that you'll get a URL with your data and graph. You can then go to Plotly's GUI and edit, tweak, and share your graph. Here's the URL:\n\nhttps://plot.ly/~IPython.Demo/3080\n\nAnd I've gone in to make a copy of the graph, and shared the data here:\n\nhttps://plot.ly/~MattSundquist/1190."
    },
    {
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "II. matplotlib Gallery graphs"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "For matplotlib experts, you'll recognize these graphs from the [matplotlib gallery](matplotlib.org/gallery.html). \n\nIn addition to matplotlib and Plotly's own Python API, You can also use Plotly's other [APIs](https://plot.ly/api) for MATLAB, R, Perl, Julia, and REST to write to graphs. That means you and I could edit the same graph with any language. We can even edit the graph and data from the GUI, so technical and non-technical teams can work together. And all the graphs go to your profile, like this: https://plot.ly/~IPython.Demo.\n\nYou control [the privacy](http://plot.ly/python/privacy) by setting `world_readable` to False or True, and can control your [sharing](http://plot.ly/python/file-sharing)."
    "prompt_number": 10
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly also reads the label types in this [damped oscillation](http://matplotlib.org/examples/pylab_examples/legend_demo2.html) graph."
    "source": "Next up, an example from [pylab](http://matplotlib.org/examples/pylab_examples/arctest.html)."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig3 = plt.figure()\n# Make a legend for specific lines.\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n\nt1 = np.arange(0.0, 2.0, 0.1)\nt2 = 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\nl1, = plt.plot(t2, np.exp(-t2))\nl2, l3 = plt.plot(t2, np.sin(2 * np.pi * t2), '--go', t1, np.log(1 + t1), '.')\nl4, = plt.plot(t2, np.exp(-t2) * np.sin(2 * np.pi * t2), 'rs-.')\n\nplt.xlabel('time')\nplt.ylabel('volts')\nplt.title('Damped oscillation')\n\n\npy.iplot_mpl(fig3)",
    "input": "fig4 = plt.figure()\n\nfrom pylab import *\n\ndef f(t):\n 'a damped exponential'\n s1 = cos(2*pi*t)\n e1 = exp(-t)\n return multiply(s1,e1)\n\nt1 = arange(0.0, 5.0, .2)\n\n\nl = plot(t1, f(t1), 'ro')\nsetp(l, 'markersize', 30)\nsetp(l, 'markerfacecolor', 'b')\n\npy.iplot_mpl(fig4)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3355\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3391\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x106516ad0>"
    "text": "<IPython.core.display.HTML at 0x1063d4950>"
    }
    ],
    "prompt_number": 8
    "prompt_number": 11
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "You can also strip out the matplotlib styling, and use Plotly's default styling."
    "source": "Here's where this gets special. You can get the data from any Plotly graph. That means you can re-plot the graph or part of it, or use your favorite Python tools to wrangle and analyze your data. Check out our [getting started guide](http://nbviewer.ipython.org/github/etpinard/plotly-python-doc/blob/1.0/s0_getting-started/s0_getting-started.ipynb) for a full background on these features."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig = tls.mpl_to_plotly(fig3)\nfig['layout'].update(showlegend=True)\nfig.strip_style()\npy.iplot(fig)",
    "input": "tls.mpl_to_plotly(fig4).get_data()",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3356\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x106131990>"
    "output_type": "pyout",
    "prompt_number": 12,
    "text": "[{'name': '_line0',\n 'x': [0.0,\n 0.20000000000000001,\n 0.40000000000000002,\n 0.60000000000000009,\n 0.80000000000000004,\n 1.0,\n 1.2000000000000002,\n 1.4000000000000001,\n 1.6000000000000001,\n 1.8,\n 2.0,\n 2.2000000000000002,\n 2.4000000000000004,\n 2.6000000000000001,\n 2.8000000000000003,\n 3.0,\n 3.2000000000000002,\n 3.4000000000000004,\n 3.6000000000000001,\n 3.8000000000000003,\n 4.0,\n 4.2000000000000002,\n 4.4000000000000004,\n 4.6000000000000005,\n 4.8000000000000007],\n 'y': [1.0,\n 0.25300171651849518,\n -0.54230030891302927,\n -0.44399794031078654,\n 0.13885028597711233,\n 0.36787944117144233,\n 0.09307413008823949,\n -0.19950113459002566,\n -0.16333771416280363,\n 0.051080165611754998,\n 0.1353352832366127,\n 0.034240058964379601,\n -0.073392365906047419,\n -0.060088587008433003,\n 0.018791342780197139,\n 0.049787068367863944,\n 0.012596213757493282,\n -0.026999542555766767,\n -0.022105355809443925,\n 0.0069129486808399343,\n 0.018315638888734179,\n 0.0046338880779826647,\n -0.0099325766273000524,\n -0.0081321059420741033,\n 0.0025431316975542792]}]"
    }
    ],
    "prompt_number": 9
    "prompt_number": 12
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Next up, an example from [pylab](http://matplotlib.org/examples/pylab_examples/arctest.html)."
    "source": "Or you can get the figure makeup. Here, we're using 'IPython.Demo', which is the username and '3357' which is the figure number. You can use this command on Plotly graphs to interact with them from the console. You can access graphs via a URL. For example, for this plot, it's:\n\nhttps://plot.ly/~IPython.Demo/3357/\n"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig4 = plt.figure()\n\nfrom pylab import *\n\ndef f(t):\n 'a damped exponential'\n s1 = cos(2*pi*t)\n e1 = exp(-t)\n return multiply(s1,e1)\n\nt1 = arange(0.0, 5.0, .2)\n\n\nl = plot(t1, f(t1), 'ro')\nsetp(l, 'markersize', 30)\nsetp(l, 'markerfacecolor', 'b')\n\npy.iplot_mpl(fig4)",
    "input": "pylab = py.get_figure('IPython.Demo', '3357')",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 13
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "#print figure\nprint pylab.to_string()",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3357\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1060cb150>"
    "output_type": "stream",
    "stream": "stdout",
    "text": "Figure(\n data=Data([\n Scatter(\n x=[0.0, 0.2, 0.4, 0.6000000000000001, 0.8, 1.0, 1.2000000000000...],\n y=[1.0, 0.2530017165184952, -0.5423003089130293, -0.44399794031...],\n name='_line0',\n mode='markers',\n marker=Marker(\n symbol='dot',\n line=Line(\n color='#000000',\n width=0.5\n ),\n size=30,\n color='#0000FF',\n opacity=1\n )\n )\n ]),\n layout=Layout(\n xaxis=XAxis(\n domain=[0.0, 1.0],\n range=[0.0, 5.0],\n showline=True,\n ticks='inside',\n showgrid=False,\n zeroline=False,\n anchor='y',\n mirror=True\n ),\n yaxis=YAxis(\n domain=[0.0, 1.0],\n range=[-0.6000000000000001, 1.2],\n showline=True,\n ticks='inside',\n showgrid=False,\n zeroline=False,\n anchor='x',\n mirror=True\n ),\n hovermode='closest',\n showlegend=False\n )\n)\n"
    }
    ],
    "prompt_number": 10
    "prompt_number": 14
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Here's where this gets special. You can get the data from any Plotly graph. That means you can re-plot the graph or part of it, or use your favorite Python tools to wrangle and analyze your data. "
    "source": "Now let's suppose we wanted to add a fit to the graph (see our [fits post](http://blog.plot.ly/post/84402951992/contour-plots-error-bars-chocolate-beer-meat) to learn more), and re-style it a bit. We can go into the web app, fork a copy, and edit the image in our GUI. No coding required."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "tls.mpl_to_plotly(fig4).get_data()",
    "input": "from IPython.display import Image\nImage(url='https://i.imgur.com/RusH4k2.png?1')",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<img src=\"https://i.imgur.com/RusH4k2.png?1\"/>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 11,
    "text": "[{'name': '_line0',\n 'x': [0.0,\n 0.20000000000000001,\n 0.40000000000000002,\n 0.60000000000000009,\n 0.80000000000000004,\n 1.0,\n 1.2000000000000002,\n 1.4000000000000001,\n 1.6000000000000001,\n 1.8,\n 2.0,\n 2.2000000000000002,\n 2.4000000000000004,\n 2.6000000000000001,\n 2.8000000000000003,\n 3.0,\n 3.2000000000000002,\n 3.4000000000000004,\n 3.6000000000000001,\n 3.8000000000000003,\n 4.0,\n 4.2000000000000002,\n 4.4000000000000004,\n 4.6000000000000005,\n 4.8000000000000007],\n 'y': [1.0,\n 0.25300171651849518,\n -0.54230030891302927,\n -0.44399794031078654,\n 0.13885028597711233,\n 0.36787944117144233,\n 0.09307413008823949,\n -0.19950113459002566,\n -0.16333771416280363,\n 0.051080165611754998,\n 0.1353352832366127,\n 0.034240058964379601,\n -0.073392365906047419,\n -0.060088587008433003,\n 0.018791342780197139,\n 0.049787068367863944,\n 0.012596213757493282,\n -0.026999542555766767,\n -0.022105355809443925,\n 0.0069129486808399343,\n 0.018315638888734179,\n 0.0046338880779826647,\n -0.0099325766273000524,\n -0.0081321059420741033,\n 0.0025431316975542792]}]"
    "prompt_number": 15,
    "text": "<IPython.core.display.Image at 0x106332810>"
    }
    ],
    "prompt_number": 11
    "prompt_number": 15
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Or you can get the data about the figure. Here, we're using 'IPython.Demo', which is the username and '3357' which is the figure number. You can use this command on any graph you see and have access to."
    "source": "I can now call that graph into the NB. And if I want to see the data for the fit or access the figure styling, I can run the same commands, but now on this graph."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "pylab = py.get_figure('IPython.Demo', '3357')",
    "input": "tls.embed('MattSundquist', '1307')",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 15
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~MattSundquist/1307\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x106250c10>"
    }
    ],
    "prompt_number": 16
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "And Plotly graphs are interactive. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "#print figure\npylab",
    "input": "from IPython.display import HTML\nHTML('<br><center><iframe class=\"vine-embed\" src=\"https://vine.co/v/Mvzin6HZzLB/embed/simple\" width=\"600\" height=\"600\" frameborder=\"0\"></iframe><script async src=\"//platform.vine.co/static/scripts/embed.js\" charset=\"utf-8\"></script></center><br>')",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<br><center><iframe class=\"vine-embed\" src=\"https://vine.co/v/Mvzin6HZzLB/embed/simple\" width=\"600\" height=\"600\" frameborder=\"0\"></iframe><script async src=\"//platform.vine.co/static/scripts/embed.js\" charset=\"utf-8\"></script></center><br>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 16,
    "text": "{'data': [{'marker': {'color': '#0000FF',\n 'line': {'color': '#000000', 'width': 0.5},\n 'opacity': 1,\n 'size': 30,\n 'symbol': 'dot'},\n 'mode': 'markers',\n 'name': '_line0',\n 'type': 'scatter',\n 'x': [0.0,\n 0.2,\n 0.4,\n 0.6000000000000001,\n 0.8,\n 1.0,\n 1.2000000000000002,\n 1.4000000000000001,\n 1.6,\n 1.8,\n 2.0,\n 2.2,\n 2.4000000000000004,\n 2.6,\n 2.8000000000000003,\n 3.0,\n 3.2,\n 3.4000000000000004,\n 3.6,\n 3.8000000000000003,\n 4.0,\n 4.2,\n 4.4,\n 4.6000000000000005,\n 4.800000000000001],\n 'y': [1.0,\n 0.2530017165184952,\n -0.5423003089130293,\n -0.44399794031078654,\n 0.13885028597711233,\n 0.36787944117144233,\n 0.09307413008823949,\n -0.19950113459002566,\n -0.16333771416280363,\n 0.051080165611755,\n 0.1353352832366127,\n 0.0342400589643796,\n -0.07339236590604742,\n -0.060088587008433,\n 0.01879134278019714,\n 0.049787068367863944,\n 0.012596213757493282,\n -0.026999542555766767,\n -0.022105355809443925,\n 0.006912948680839934,\n 0.01831563888873418,\n 0.004633888077982665,\n -0.009932576627300052,\n -0.008132105942074103,\n 0.0025431316975542792]}],\n 'layout': {'hovermode': 'closest',\n 'showlegend': False,\n 'xaxis': {'anchor': 'y',\n 'domain': [0.0, 1.0],\n 'mirror': True,\n 'range': [0.0, 5.0],\n 'showgrid': False,\n 'showline': True,\n 'ticks': 'inside',\n 'zeroline': False},\n 'yaxis': {'anchor': 'x',\n 'domain': [0.0, 1.0],\n 'mirror': True,\n 'range': [-0.6000000000000001, 1.2],\n 'showgrid': False,\n 'showline': True,\n 'ticks': 'inside',\n 'zeroline': False}}}"
    "prompt_number": 17,
    "text": "<IPython.core.display.HTML at 0x106332b90>"
    }
    ],
    "prompt_number": 16
    "prompt_number": 17
    },
    {
    "cell_type": "markdown",
    @@ -267,13 +269,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3358\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3392\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1061dc210>"
    "text": "<IPython.core.display.HTML at 0x1063f5310>"
    }
    ],
    "prompt_number": 17
    "prompt_number": 18
    },
    {
    "cell_type": "markdown",
    @@ -288,13 +290,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3359\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3393\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x106578110>"
    "text": "<IPython.core.display.HTML at 0x1068c4650>"
    }
    ],
    "prompt_number": 18
    "prompt_number": 19
    },
    {
    "cell_type": "markdown",
    @@ -314,13 +316,13 @@
    "text": "mean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\n"
    },
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3360\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3394\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x106fe8e50>"
    "text": "<IPython.core.display.HTML at 0x1068fed50>"
    }
    ],
    "prompt_number": 19
    "prompt_number": 20
    },
    {
    "cell_type": "markdown",
    @@ -335,19 +337,19 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3361\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3395\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1075a9c10>"
    "text": "<IPython.core.display.HTML at 0x1068bf090>"
    }
    ],
    "prompt_number": 20
    "prompt_number": 21
    },
    {
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "III. Stack Overflow Answers"
    "source": "II. Stack Overflow Answers"
    },
    {
    "cell_type": "markdown",
    @@ -362,13 +364,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3362\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3396\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1075a5f50>"
    "text": "<IPython.core.display.HTML at 0x1063e12d0>"
    }
    ],
    "prompt_number": 21
    "prompt_number": 22
    },
    {
    "cell_type": "markdown",
    @@ -383,13 +385,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3363\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3397\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e94f110>"
    "text": "<IPython.core.display.HTML at 0x10e6b6a10>"
    }
    ],
    "prompt_number": 22
    "prompt_number": 23
    },
    {
    "cell_type": "markdown",
    @@ -404,13 +406,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3364\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3398\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10ec37b50>"
    "text": "<IPython.core.display.HTML at 0x10eaa6450>"
    }
    ],
    "prompt_number": 23
    "prompt_number": 24
    },
    {
    "cell_type": "markdown",
    @@ -425,18 +427,18 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3365\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3399\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10eee2f90>"
    "text": "<IPython.core.display.HTML at 0x10ed9c450>"
    }
    ],
    "prompt_number": 24
    "prompt_number": 25
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly also shows LaTeX if you want to draw [variables as subscripts in math mode](http://stackoverflow.com/questions/23276918/writing-variables-as-subscripts-in-math-mode)."
    "source": "Plotly also lets you draw [variables as subscripts in math mode](http://stackoverflow.com/questions/23276918/writing-variables-as-subscripts-in-math-mode)."
    },
    {
    "cell_type": "code",
    @@ -446,19 +448,19 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3366\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3400\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10ef14390>"
    "text": "<IPython.core.display.HTML at 0x10ef9afd0>"
    }
    ],
    "prompt_number": 25
    "prompt_number": 26
    },
    {
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "IV. Prettyplotlib graphs in Plotly"
    "source": "III. Prettyplotlib graphs in Plotly"
    },
    {
    "cell_type": "markdown",
    @@ -473,13 +475,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3367\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3401\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10ee04990>"
    "text": "<IPython.core.display.HTML at 0x10eaaa990>"
    }
    ],
    "prompt_number": 26
    "prompt_number": 27
    },
    {
    "cell_type": "markdown",
    @@ -494,10 +496,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3368\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3402\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f94fb10>"
    "text": "<IPython.core.display.HTML at 0x10f00ba90>"
    }
    ],
    "prompt_number": 28
    @@ -506,7 +508,7 @@
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "V. Plotting with seaborn"
    "source": "IV. Plotting with seaborn"
    },
    {
    "cell_type": "markdown",
    @@ -539,10 +541,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3369\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3403\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f21f990>"
    "text": "<IPython.core.display.HTML at 0x10ef99e10>"
    }
    ],
    "prompt_number": 31
    @@ -560,10 +562,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3370\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3404\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x111743490>"
    "text": "<IPython.core.display.HTML at 0x110a99ed0>"
    }
    ],
    "prompt_number": 32
    @@ -590,10 +592,10 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3371\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3405\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x111766710>"
    "text": "<IPython.core.display.HTML at 0x11095bc10>"
    }
    ],
    "prompt_number": 34
  10. msund revised this gist May 3, 2014. 1 changed file with 86 additions and 85 deletions.
    171 changes: 86 additions & 85 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -25,7 +25,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 12
    "prompt_number": 1
    },
    {
    "cell_type": "code",
    @@ -34,7 +34,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 13
    "prompt_number": 2
    },
    {
    "cell_type": "code",
    @@ -43,7 +43,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 14
    "prompt_number": 3
    },
    {
    "cell_type": "code",
    @@ -55,11 +55,11 @@
    {
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 15,
    "prompt_number": 4,
    "text": "'1.0.0'"
    }
    ],
    "prompt_number": 15
    "prompt_number": 4
    },
    {
    "cell_type": "heading",
    @@ -82,17 +82,17 @@
    {
    "metadata": {},
    "output_type": "display_data",
    "png": "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\n",
    "text": "<matplotlib.figure.Figure at 0x10e073fd0>"
    "png": "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\nGOz/Avh2jouZHyYAAAAASUVORK5CYII=\n",
    "text": "<matplotlib.figure.Figure at 0x1060cb6d0>"
    },
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3312\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3353\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e088410>"
    "text": "<IPython.core.display.HTML at 0x1060f93d0>"
    }
    ],
    "prompt_number": 16
    "prompt_number": 5
    },
    {
    "cell_type": "markdown",
    @@ -106,7 +106,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 17
    "prompt_number": 6
    },
    {
    "cell_type": "code",
    @@ -116,13 +116,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3313\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3354\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e09c4d0>"
    "text": "<IPython.core.display.HTML at 0x1061318d0>"
    }
    ],
    "prompt_number": 18
    "prompt_number": 7
    },
    {
    "cell_type": "markdown",
    @@ -153,13 +153,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3347\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3355\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110f2f710>"
    "text": "<IPython.core.display.HTML at 0x106516ad0>"
    }
    ],
    "prompt_number": 59
    "prompt_number": 8
    },
    {
    "cell_type": "markdown",
    @@ -174,13 +174,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3315\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3356\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e5f1210>"
    "text": "<IPython.core.display.HTML at 0x106131990>"
    }
    ],
    "prompt_number": 22
    "prompt_number": 9
    },
    {
    "cell_type": "markdown",
    @@ -195,13 +195,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3316\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3357\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e6ba410>"
    "text": "<IPython.core.display.HTML at 0x1060cb150>"
    }
    ],
    "prompt_number": 23
    "prompt_number": 10
    },
    {
    "cell_type": "markdown",
    @@ -218,32 +218,41 @@
    {
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 61,
    "prompt_number": 11,
    "text": "[{'name': '_line0',\n 'x': [0.0,\n 0.20000000000000001,\n 0.40000000000000002,\n 0.60000000000000009,\n 0.80000000000000004,\n 1.0,\n 1.2000000000000002,\n 1.4000000000000001,\n 1.6000000000000001,\n 1.8,\n 2.0,\n 2.2000000000000002,\n 2.4000000000000004,\n 2.6000000000000001,\n 2.8000000000000003,\n 3.0,\n 3.2000000000000002,\n 3.4000000000000004,\n 3.6000000000000001,\n 3.8000000000000003,\n 4.0,\n 4.2000000000000002,\n 4.4000000000000004,\n 4.6000000000000005,\n 4.8000000000000007],\n 'y': [1.0,\n 0.25300171651849518,\n -0.54230030891302927,\n -0.44399794031078654,\n 0.13885028597711233,\n 0.36787944117144233,\n 0.09307413008823949,\n -0.19950113459002566,\n -0.16333771416280363,\n 0.051080165611754998,\n 0.1353352832366127,\n 0.034240058964379601,\n -0.073392365906047419,\n -0.060088587008433003,\n 0.018791342780197139,\n 0.049787068367863944,\n 0.012596213757493282,\n -0.026999542555766767,\n -0.022105355809443925,\n 0.0069129486808399343,\n 0.018315638888734179,\n 0.0046338880779826647,\n -0.0099325766273000524,\n -0.0081321059420741033,\n 0.0025431316975542792]}]"
    }
    ],
    "prompt_number": 61
    "prompt_number": 11
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Or you can get the string to produce the graph using Plotly."
    "source": "Or you can get the data about the figure. Here, we're using 'IPython.Demo', which is the username and '3357' which is the figure number. You can use this command on any graph you see and have access to."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "tls.mpl_to_plotly(fig4).to_string(pretty = False)",
    "input": "pylab = py.get_figure('IPython.Demo', '3357')",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 15
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "#print figure\npylab",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 62,
    "text": "\"Figure(\\n data=Data([\\n Scatter(\\n x=[0.0, 0.20000000000000001, 0.40000000000000002, 0.60000000000000009, 0.80000000000000004, 1.0, 1.2000000000000002, 1.4000000000000001, 1.6000000000000001, 1.8, 2.0, 2.2000000000000002, 2.4000000000000004, 2.6000000000000001, 2.8000000000000003, 3.0, 3.2000000000000002, 3.4000000000000004, 3.6000000000000001, 3.8000000000000003, 4.0, 4.2000000000000002, 4.4000000000000004, 4.6000000000000005, 4.8000000000000007],\\n y=[1.0, 0.25300171651849518, -0.54230030891302927, -0.44399794031078654, 0.13885028597711233, 0.36787944117144233, 0.09307413008823949, -0.19950113459002566, -0.16333771416280363, 0.051080165611754998, 0.1353352832366127, 0.034240058964379601, -0.073392365906047419, -0.060088587008433003, 0.018791342780197139, 0.049787068367863944, 0.012596213757493282, -0.026999542555766767, -0.022105355809443925, 0.0069129486808399343, 0.018315638888734179, 0.0046338880779826647, -0.0099325766273000524, -0.0081321059420741033, 0.0025431316975542792],\\n name='_line0',\\n mode='markers',\\n marker=Marker(\\n symbol='dot',\\n line=Line(\\n color='#000000',\\n width=0\\n ),\\n size=30,\\n color='#0000FF',\\n opacity=1\\n )\\n )\\n ]),\\n layout=Layout(\\n xaxis=XAxis(\\n domain=[0.0, 1.0],\\n range=(0.0, 5.0),\\n showline=True,\\n ticks='inside',\\n showgrid=True,\\n zeroline=False,\\n anchor='y',\\n mirror=True\\n ),\\n yaxis=YAxis(\\n domain=[0.0, 1.0],\\n range=(-0.60000000000000009, 1.2),\\n showline=True,\\n ticks='inside',\\n showgrid=True,\\n zeroline=False,\\n anchor='x',\\n mirror=True\\n ),\\n width=480,\\n height=320,\\n autosize=False,\\n margin=Margin(\\n l=60,\\n r=47,\\n b=40,\\n t=31,\\n pad=0\\n ),\\n hovermode='closest',\\n showlegend=False\\n )\\n)\""
    "prompt_number": 16,
    "text": "{'data': [{'marker': {'color': '#0000FF',\n 'line': {'color': '#000000', 'width': 0.5},\n 'opacity': 1,\n 'size': 30,\n 'symbol': 'dot'},\n 'mode': 'markers',\n 'name': '_line0',\n 'type': 'scatter',\n 'x': [0.0,\n 0.2,\n 0.4,\n 0.6000000000000001,\n 0.8,\n 1.0,\n 1.2000000000000002,\n 1.4000000000000001,\n 1.6,\n 1.8,\n 2.0,\n 2.2,\n 2.4000000000000004,\n 2.6,\n 2.8000000000000003,\n 3.0,\n 3.2,\n 3.4000000000000004,\n 3.6,\n 3.8000000000000003,\n 4.0,\n 4.2,\n 4.4,\n 4.6000000000000005,\n 4.800000000000001],\n 'y': [1.0,\n 0.2530017165184952,\n -0.5423003089130293,\n -0.44399794031078654,\n 0.13885028597711233,\n 0.36787944117144233,\n 0.09307413008823949,\n -0.19950113459002566,\n -0.16333771416280363,\n 0.051080165611755,\n 0.1353352832366127,\n 0.0342400589643796,\n -0.07339236590604742,\n -0.060088587008433,\n 0.01879134278019714,\n 0.049787068367863944,\n 0.012596213757493282,\n -0.026999542555766767,\n -0.022105355809443925,\n 0.006912948680839934,\n 0.01831563888873418,\n 0.004633888077982665,\n -0.009932576627300052,\n -0.008132105942074103,\n 0.0025431316975542792]}],\n 'layout': {'hovermode': 'closest',\n 'showlegend': False,\n 'xaxis': {'anchor': 'y',\n 'domain': [0.0, 1.0],\n 'mirror': True,\n 'range': [0.0, 5.0],\n 'showgrid': False,\n 'showline': True,\n 'ticks': 'inside',\n 'zeroline': False},\n 'yaxis': {'anchor': 'x',\n 'domain': [0.0, 1.0],\n 'mirror': True,\n 'range': [-0.6000000000000001, 1.2],\n 'showgrid': False,\n 'showline': True,\n 'ticks': 'inside',\n 'zeroline': False}}}"
    }
    ],
    "prompt_number": 62
    "prompt_number": 16
    },
    {
    "cell_type": "markdown",
    @@ -258,18 +267,18 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3317\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3358\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e5ef510>"
    "text": "<IPython.core.display.HTML at 0x1061dc210>"
    }
    ],
    "prompt_number": 24
    "prompt_number": 17
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Another subplotting example, in this case we're using Plotly's defaults. "
    "source": "Another subplotting example using Plotly's defaults. "
    },
    {
    "cell_type": "code",
    @@ -279,13 +288,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3318\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3359\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e5f1550>"
    "text": "<IPython.core.display.HTML at 0x106578110>"
    }
    ],
    "prompt_number": 25
    "prompt_number": 18
    },
    {
    "cell_type": "markdown",
    @@ -305,13 +314,13 @@
    "text": "mean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\n"
    },
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3319\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3360\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10f7301d0>"
    "text": "<IPython.core.display.HTML at 0x106fe8e50>"
    }
    ],
    "prompt_number": 26
    "prompt_number": 19
    },
    {
    "cell_type": "markdown",
    @@ -326,13 +335,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3349\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3361\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110f93b90>"
    "text": "<IPython.core.display.HTML at 0x1075a9c10>"
    }
    ],
    "prompt_number": 63
    "prompt_number": 20
    },
    {
    "cell_type": "heading",
    @@ -353,13 +362,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3321\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3362\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1100d3a10>"
    "text": "<IPython.core.display.HTML at 0x1075a5f50>"
    }
    ],
    "prompt_number": 28
    "prompt_number": 21
    },
    {
    "cell_type": "markdown",
    @@ -374,13 +383,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3322\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3363\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10fe131d0>"
    "text": "<IPython.core.display.HTML at 0x10e94f110>"
    }
    ],
    "prompt_number": 29
    "prompt_number": 22
    },
    {
    "cell_type": "markdown",
    @@ -395,13 +404,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3323\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3364\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110297550>"
    "text": "<IPython.core.display.HTML at 0x10ec37b50>"
    }
    ],
    "prompt_number": 30
    "prompt_number": 23
    },
    {
    "cell_type": "markdown",
    @@ -416,13 +425,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3324\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3365\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1102d43d0>"
    "text": "<IPython.core.display.HTML at 0x10eee2f90>"
    }
    ],
    "prompt_number": 31
    "prompt_number": 24
    },
    {
    "cell_type": "markdown",
    @@ -437,13 +446,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3325\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3366\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x1107c0810>"
    "text": "<IPython.core.display.HTML at 0x10ef14390>"
    }
    ],
    "prompt_number": 32
    "prompt_number": 25
    },
    {
    "cell_type": "heading",
    @@ -464,13 +473,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3348\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3367\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e9d6050>"
    "text": "<IPython.core.display.HTML at 0x10ee04990>"
    }
    ],
    "prompt_number": 60
    "prompt_number": 26
    },
    {
    "cell_type": "markdown",
    @@ -480,18 +489,18 @@
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig15 = plt.figure()\n\nimport prettyplotlib as ppl\n\n# Set the random seed for consistency\nnp.random.seed(12)\n\n# Show the whole color range\nfor i in range(8):\n y = np.random.normal(size=1000).cumsum()\n x = np.arange(1000)\n\n # For now, you need to specify both x and y :(\n # Still figuring out how to specify just one\n ppl.plot(x, y, label=str(i), linewidth=0.75)\n \npy.iplot_mpl(fig15)",
    "input": "fig15 = plt.figure()\n\nimport prettyplotlib as ppl\n\n# Set the random seed for consistency\nnp.random.seed(12)\n\n# Show the whole color range\nfor i in range(8):\n y = np.random.normal(size=1000).cumsum()\n x = np.arange(1000)\n\n # Specify both x and y\n ppl.plot(x, y, label=str(i), linewidth=0.75)\n \npy.iplot_mpl(fig15)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3346\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3368\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110fc72d0>"
    "text": "<IPython.core.display.HTML at 0x10f94fb10>"
    }
    ],
    "prompt_number": 56
    "prompt_number": 28
    },
    {
    "cell_type": "heading",
    @@ -511,7 +520,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 44
    "prompt_number": 29
    },
    {
    "cell_type": "code",
    @@ -520,7 +529,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 45
    "prompt_number": 30
    },
    {
    "cell_type": "code",
    @@ -530,13 +539,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3339\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3369\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110fab290>"
    "text": "<IPython.core.display.HTML at 0x10f21f990>"
    }
    ],
    "prompt_number": 46
    "prompt_number": 31
    },
    {
    "cell_type": "markdown",
    @@ -551,13 +560,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3340\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3370\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x111ab4150>"
    "text": "<IPython.core.display.HTML at 0x111743490>"
    }
    ],
    "prompt_number": 47
    "prompt_number": 32
    },
    {
    "cell_type": "markdown",
    @@ -571,7 +580,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 42
    "prompt_number": 33
    },
    {
    "cell_type": "code",
    @@ -581,21 +590,13 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3341\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3371\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x110d1f550>"
    "text": "<IPython.core.display.HTML at 0x111766710>"
    }
    ],
    "prompt_number": 48
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "",
    "language": "python",
    "metadata": {},
    "outputs": []
    "prompt_number": 34
    }
    ],
    "metadata": {}
  11. msund revised this gist May 2, 2014. 1 changed file with 8 additions and 8 deletions.
    16 changes: 8 additions & 8 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -127,7 +127,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "One special Plotly feature is that you'll get a URL for your call. The data always lives with the graph. The graph we just made is here:\n\nhttps://plot.ly/~IPython.Demo/3080\n\nAnd I've gone in to make a copy of the graph, and shared the data here:\n\nhttps://plot.ly/~MattSundquist/1190"
    "source": "One special Plotly feature is that you'll get a URL with your data and graph. You can then go to Plotly's GUI and edit, tweak, and share your graph. Here's the URL:\n\nhttps://plot.ly/~IPython.Demo/3080\n\nAnd I've gone in to make a copy of the graph, and shared the data here:\n\nhttps://plot.ly/~MattSundquist/1190."
    },
    {
    "cell_type": "heading",
    @@ -316,23 +316,23 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "[histogram](http://matplotlib.org/examples/statistics/histogram_demo_features.html)"
    "source": "And a final [histogram](http://matplotlib.org/examples/statistics/histogram_demo_features.html) from the matplotlib gallery. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig8 = plt.figure()\n\nimport numpy as np\nimport matplotlib.mlab as mlab\nimport matplotlib.pyplot as plt\n\n\n# example data\nmu = 100 # mean of distribution\nsigma = 15 # standard deviation of distribution\nx = mu + sigma * np.random.randn(10000)\n\nnum_bins = 50\n# the histogram of the data\nn, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)\n# add a 'best fit' line\ny = mlab.normpdf(bins, mu, sigma)\nplt.plot(bins, y, 'r--')\nplt.xlabel('Smarts')\nplt.ylabel('Probability')\nplt.title(r'Histogram of IQ: $\\mu=100$, $\\sigma=15$')\n\n# Tweak spacing to prevent clipping of ylabel\nplt.subplots_adjust(left=0.15)\n\npy.iplot_mpl(fig8, strip_style = True)",
    "input": "fig8 = plt.figure()\n\nimport numpy as np\nimport matplotlib.mlab as mlab\nimport matplotlib.pyplot as plt\n\n\n# example data\nmu = 100 # mean of distribution\nsigma = 15 # standard deviation of distribution\nx = mu + sigma * np.random.randn(10000)\n\nnum_bins = 50\n# the histogram of the data\nn, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)\n# add a 'best fit' line\ny = mlab.normpdf(bins, mu, sigma)\nplt.plot(bins, y, 'r--')\nplt.xlabel('Smarts')\nplt.ylabel('Probability')\n\n# Tweak spacing to prevent clipping of ylabel\nplt.subplots_adjust(left=0.15)\n\npy.iplot_mpl(fig8, strip_style = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3320\" height=\"525\" width=\"100%\"></iframe>",
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3349\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10fe0f350>"
    "text": "<IPython.core.display.HTML at 0x110f93b90>"
    }
    ],
    "prompt_number": 27
    "prompt_number": 63
    },
    {
    "cell_type": "heading",
    @@ -475,7 +475,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "prettyplotlib again improves on matplotlib's defaults, adding an appealing set of defaults. "
    "source": "And another prettyplotlib example."
    },
    {
    "cell_type": "code",
    @@ -502,7 +502,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Another library we really difg is [seaborn](http://stanford.edu/~mwaskom/software/seaborn/index.html), an awesome project by Michael Waskom. You may need to [import six](http://stackoverflow.com/questions/13967428/importerror-no-module-named-six), which you can do from pip. The styling isn't yet translated to Plotly, so we'll go to Plotly's default settings. "
    "source": "Another library we really dig is [seaborn](http://stanford.edu/~mwaskom/software/seaborn/index.html), by Michael Waskom. You may need to [import six](http://stackoverflow.com/questions/13967428/importerror-no-module-named-six), which you can do from pip. The styling isn't yet translated to Plotly, so we'll go to Plotly's default settings. "
    },
    {
    "cell_type": "code",
  12. msund revised this gist May 2, 2014. 1 changed file with 24 additions and 24 deletions.
    48 changes: 24 additions & 24 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -164,86 +164,86 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Here's where this gets special. You can get the data from any Plotly graph. That means you can re-plot the graph or part of it, or use your favorite Python tools to wrangle and analyze your data. "
    "source": "You can also strip out the matplotlib styling, and use Plotly's default styling."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "tls.mpl_to_plotly(fig3).get_data()",
    "input": "fig = tls.mpl_to_plotly(fig3)\nfig['layout'].update(showlegend=True)\nfig.strip_style()\npy.iplot(fig)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3315\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 57,
    "text": "[{'name': '_line0',\n 'x': [0.0,\n 0.01,\n 0.02,\n 0.029999999999999999,\n 0.040000000000000001,\n 0.050000000000000003,\n 0.059999999999999998,\n 0.070000000000000007,\n 0.080000000000000002,\n 0.089999999999999997,\n 0.10000000000000001,\n 0.11,\n 0.12,\n 0.13,\n 0.14000000000000001,\n 0.14999999999999999,\n 0.16,\n 0.17000000000000001,\n 0.17999999999999999,\n 0.19,\n 0.20000000000000001,\n 0.20999999999999999,\n 0.22,\n 0.23000000000000001,\n 0.23999999999999999,\n 0.25,\n 0.26000000000000001,\n 0.27000000000000002,\n 0.28000000000000003,\n 0.28999999999999998,\n 0.29999999999999999,\n 0.31,\n 0.32000000000000001,\n 0.33000000000000002,\n 0.34000000000000002,\n 0.35000000000000003,\n 0.35999999999999999,\n 0.37,\n 0.38,\n 0.39000000000000001,\n 0.40000000000000002,\n 0.41000000000000003,\n 0.41999999999999998,\n 0.42999999999999999,\n 0.44,\n 0.45000000000000001,\n 0.46000000000000002,\n 0.47000000000000003,\n 0.47999999999999998,\n 0.48999999999999999,\n 0.5,\n 0.51000000000000001,\n 0.52000000000000002,\n 0.53000000000000003,\n 0.54000000000000004,\n 0.55000000000000004,\n 0.56000000000000005,\n 0.57000000000000006,\n 0.57999999999999996,\n 0.58999999999999997,\n 0.59999999999999998,\n 0.60999999999999999,\n 0.62,\n 0.63,\n 0.64000000000000001,\n 0.65000000000000002,\n 0.66000000000000003,\n 0.67000000000000004,\n 0.68000000000000005,\n 0.69000000000000006,\n 0.70000000000000007,\n 0.70999999999999996,\n 0.71999999999999997,\n 0.72999999999999998,\n 0.73999999999999999,\n 0.75,\n 0.76000000000000001,\n 0.77000000000000002,\n 0.78000000000000003,\n 0.79000000000000004,\n 0.80000000000000004,\n 0.81000000000000005,\n 0.82000000000000006,\n 0.83000000000000007,\n 0.83999999999999997,\n 0.84999999999999998,\n 0.85999999999999999,\n 0.87,\n 0.88,\n 0.89000000000000001,\n 0.90000000000000002,\n 0.91000000000000003,\n 0.92000000000000004,\n 0.93000000000000005,\n 0.94000000000000006,\n 0.95000000000000007,\n 0.95999999999999996,\n 0.96999999999999997,\n 0.97999999999999998,\n 0.98999999999999999,\n 1.0,\n 1.01,\n 1.02,\n 1.03,\n 1.04,\n 1.05,\n 1.0600000000000001,\n 1.0700000000000001,\n 1.0800000000000001,\n 1.0900000000000001,\n 1.1000000000000001,\n 1.1100000000000001,\n 1.1200000000000001,\n 1.1300000000000001,\n 1.1400000000000001,\n 1.1500000000000001,\n 1.1599999999999999,\n 1.1699999999999999,\n 1.1799999999999999,\n 1.1899999999999999,\n 1.2,\n 1.21,\n 1.22,\n 1.23,\n 1.24,\n 1.25,\n 1.26,\n 1.27,\n 1.28,\n 1.29,\n 1.3,\n 1.3100000000000001,\n 1.3200000000000001,\n 1.3300000000000001,\n 1.3400000000000001,\n 1.3500000000000001,\n 1.3600000000000001,\n 1.3700000000000001,\n 1.3800000000000001,\n 1.3900000000000001,\n 1.4000000000000001,\n 1.4099999999999999,\n 1.4199999999999999,\n 1.4299999999999999,\n 1.4399999999999999,\n 1.45,\n 1.46,\n 1.47,\n 1.48,\n 1.49,\n 1.5,\n 1.51,\n 1.52,\n 1.53,\n 1.54,\n 1.55,\n 1.5600000000000001,\n 1.5700000000000001,\n 1.5800000000000001,\n 1.5900000000000001,\n 1.6000000000000001,\n 1.6100000000000001,\n 1.6200000000000001,\n 1.6300000000000001,\n 1.6400000000000001,\n 1.6500000000000001,\n 1.6600000000000001,\n 1.6699999999999999,\n 1.6799999999999999,\n 1.6899999999999999,\n 1.7,\n 1.71,\n 1.72,\n 1.73,\n 1.74,\n 1.75,\n 1.76,\n 1.77,\n 1.78,\n 1.79,\n 1.8,\n 1.8100000000000001,\n 1.8200000000000001,\n 1.8300000000000001,\n 1.8400000000000001,\n 1.8500000000000001,\n 1.8600000000000001,\n 1.8700000000000001,\n 1.8800000000000001,\n 1.8900000000000001,\n 1.9000000000000001,\n 1.9100000000000001,\n 1.9199999999999999,\n 1.9299999999999999,\n 1.9399999999999999,\n 1.95,\n 1.96,\n 1.97,\n 1.98,\n 1.99],\n 'y': [1.0,\n 0.99004983374916811,\n 0.98019867330675525,\n 0.97044553354850815,\n 0.96078943915232318,\n 0.95122942450071402,\n 0.94176453358424872,\n 0.93239381990594827,\n 0.92311634638663576,\n 0.91393118527122819,\n 0.90483741803595952,\n 0.89583413529652822,\n 0.88692043671715748,\n 0.8780954309205613,\n 0.86935823539880586,\n 0.86070797642505781,\n 0.85214378896621135,\n 0.8436648165963837,\n 0.835270211411272,\n 0.82695913394336229,\n 0.81873075307798182,\n 0.81058424597018708,\n 0.80251879796247849,\n 0.79453360250333405,\n 0.78662786106655347,\n 0.77880078307140488,\n 0.77105158580356625,\n 0.76337949433685315,\n 0.75578374145572547,\n 0.74826356757856527,\n 0.74081822068171788,\n 0.73344695622428924,\n 0.72614903707369094,\n 0.71892373343192617,\n 0.71177032276260965,\n 0.70468808971871344,\n 0.69767632607103103,\n 0.69073433063735468,\n 0.68386140921235583,\n 0.67705687449816465,\n 0.67032004603563933,\n 0.6636502501363194,\n 0.65704681981505675,\n 0.65050909472331653,\n 0.64403642108314141,\n 0.63762815162177333,\n 0.63128364550692595,\n 0.62500226828270078,\n 0.61878339180614084,\n 0.61262639418441611,\n 0.60653065971263342,\n 0.6004955788122659,\n 0.59452054797019438,\n 0.58860496967835518,\n 0.58274825237398964,\n 0.57694981038048665,\n 0.57120906384881487,\n 0.56552543869953709,\n 0.55989836656540204,\n 0.5543272847345071,\n 0.54881163609402639,\n 0.54335086907449981,\n 0.53794443759467447,\n 0.53259180100689718,\n 0.52729242404304855,\n 0.52204577676101604,\n 0.51685133449169918,\n 0.51170857778654244,\n 0.50661699236558955,\n 0.50157606906605545,\n 0.49658530379140947,\n 0.4916441974609651,\n 0.48675225595997168,\n 0.48190899009020244,\n 0.47711391552103438,\n 0.47236655274101469,\n 0.46766642700990924,\n 0.46301306831122807,\n 0.45840601130522352,\n 0.45384479528235583,\n 0.44932896411722156,\n 0.44485806622294111,\n 0.44043165450599925,\n 0.43604928632153556,\n 0.43171052342907973,\n 0.42741493194872671,\n 0.42316208231774882,\n 0.418951549247639,\n 0.41478291168158138,\n 0.4106557527523455,\n 0.40656965974059911,\n 0.40252422403363597,\n 0.39851904108451414,\n 0.39455371037160109,\n 0.39062783535852108,\n 0.38674102345450118,\n 0.38289288597511206,\n 0.37908303810339883,\n 0.37531109885139957,\n 0.37157669102204571,\n 0.36787944117144233,\n 0.36421897957152333,\n 0.3605949401730783,\n 0.35700696056914738,\n 0.35345468195878016,\n 0.34993774911115533,\n 0.3464558103300574,\n 0.34300851741870664,\n 0.33959552564493911,\n 0.33621649370673334,\n 0.33287108369807955,\n 0.32955896107518906,\n 0.32627979462303947,\n 0.32303325642225289,\n 0.31981902181630384,\n 0.31663676937905316,\n 0.31348618088260533,\n 0.31036694126548503,\n 0.30727873860113125,\n 0.30422126406670408,\n 0.30119421191220214,\n 0.29819727942988739,\n 0.29523016692401421,\n 0.29229257768085942,\n 0.28938421793905061,\n 0.28650479686019009,\n 0.2836540264997704,\n 0.28083162177837978,\n 0.27803730045319414,\n 0.27527078308975234,\n 0.27253179303401259,\n 0.26982005638468681,\n 0.26713530196585034,\n 0.26447726129982396,\n 0.26184566858032599,\n 0.25924026064589151,\n 0.25666077695355588,\n 0.25410695955280027,\n 0.25157855305975646,\n 0.24907530463166816,\n 0.24659696394160643,\n 0.24414328315343711,\n 0.24171401689703645,\n 0.23930892224375455,\n 0.23692775868212176,\n 0.23457028809379765,\n 0.23223627472975883,\n 0.22992548518672384,\n 0.22763768838381274,\n 0.22537265553943872,\n 0.22313016014842982,\n 0.2209099779593782,\n 0.21871188695221475,\n 0.21653566731600707,\n 0.21438110142697794,\n 0.21224797382674304,\n 0.21013607120076472,\n 0.20804518235702046,\n 0.20597509820488344,\n 0.20392561173421342,\n 0.20189651799465538,\n 0.19988761407514449,\n 0.19789869908361465,\n 0.19592957412690934,\n 0.19398004229089189,\n 0.19204990862075408,\n 0.1901389801015205,\n 0.1882470656387468,\n 0.18637397603940997,\n 0.18451952399298926,\n 0.18268352405273466,\n 0.1808657926171221,\n 0.17906614791149322,\n 0.17728440996987782,\n 0.17552040061699686,\n 0.17377394345044514,\n 0.17204486382305054,\n 0.17033298882540943,\n 0.1686381472685955,\n 0.16696016966704069,\n 0.16529888822158653,\n 0.16365413680270405,\n 0.16202575093388075,\n 0.16041356777517274,\n 0.15881742610692068,\n 0.15723716631362761,\n 0.15567263036799731,\n 0.1541236618151314,\n 0.15259010575688386,\n 0.15107180883637084,\n 0.14956861922263504,\n 0.14808038659546244,\n 0.14660696213035015,\n 0.14514819848362373,\n 0.14370394977770293,\n 0.14227407158651359,\n 0.140858420921045,\n 0.13945685621505094,\n 0.13806923731089282,\n 0.13669542544552385]},\n {'name': '_line1',\n 'x': [0.0,\n 0.01,\n 0.02,\n 0.029999999999999999,\n 0.040000000000000001,\n 0.050000000000000003,\n 0.059999999999999998,\n 0.070000000000000007,\n 0.080000000000000002,\n 0.089999999999999997,\n 0.10000000000000001,\n 0.11,\n 0.12,\n 0.13,\n 0.14000000000000001,\n 0.14999999999999999,\n 0.16,\n 0.17000000000000001,\n 0.17999999999999999,\n 0.19,\n 0.20000000000000001,\n 0.20999999999999999,\n 0.22,\n 0.23000000000000001,\n 0.23999999999999999,\n 0.25,\n 0.26000000000000001,\n 0.27000000000000002,\n 0.28000000000000003,\n 0.28999999999999998,\n 0.29999999999999999,\n 0.31,\n 0.32000000000000001,\n 0.33000000000000002,\n 0.34000000000000002,\n 0.35000000000000003,\n 0.35999999999999999,\n 0.37,\n 0.38,\n 0.39000000000000001,\n 0.40000000000000002,\n 0.41000000000000003,\n 0.41999999999999998,\n 0.42999999999999999,\n 0.44,\n 0.45000000000000001,\n 0.46000000000000002,\n 0.47000000000000003,\n 0.47999999999999998,\n 0.48999999999999999,\n 0.5,\n 0.51000000000000001,\n 0.52000000000000002,\n 0.53000000000000003,\n 0.54000000000000004,\n 0.55000000000000004,\n 0.56000000000000005,\n 0.57000000000000006,\n 0.57999999999999996,\n 0.58999999999999997,\n 0.59999999999999998,\n 0.60999999999999999,\n 0.62,\n 0.63,\n 0.64000000000000001,\n 0.65000000000000002,\n 0.66000000000000003,\n 0.67000000000000004,\n 0.68000000000000005,\n 0.69000000000000006,\n 0.70000000000000007,\n 0.70999999999999996,\n 0.71999999999999997,\n 0.72999999999999998,\n 0.73999999999999999,\n 0.75,\n 0.76000000000000001,\n 0.77000000000000002,\n 0.78000000000000003,\n 0.79000000000000004,\n 0.80000000000000004,\n 0.81000000000000005,\n 0.82000000000000006,\n 0.83000000000000007,\n 0.83999999999999997,\n 0.84999999999999998,\n 0.85999999999999999,\n 0.87,\n 0.88,\n 0.89000000000000001,\n 0.90000000000000002,\n 0.91000000000000003,\n 0.92000000000000004,\n 0.93000000000000005,\n 0.94000000000000006,\n 0.95000000000000007,\n 0.95999999999999996,\n 0.96999999999999997,\n 0.97999999999999998,\n 0.98999999999999999,\n 1.0,\n 1.01,\n 1.02,\n 1.03,\n 1.04,\n 1.05,\n 1.0600000000000001,\n 1.0700000000000001,\n 1.0800000000000001,\n 1.0900000000000001,\n 1.1000000000000001,\n 1.1100000000000001,\n 1.1200000000000001,\n 1.1300000000000001,\n 1.1400000000000001,\n 1.1500000000000001,\n 1.1599999999999999,\n 1.1699999999999999,\n 1.1799999999999999,\n 1.1899999999999999,\n 1.2,\n 1.21,\n 1.22,\n 1.23,\n 1.24,\n 1.25,\n 1.26,\n 1.27,\n 1.28,\n 1.29,\n 1.3,\n 1.3100000000000001,\n 1.3200000000000001,\n 1.3300000000000001,\n 1.3400000000000001,\n 1.3500000000000001,\n 1.3600000000000001,\n 1.3700000000000001,\n 1.3800000000000001,\n 1.3900000000000001,\n 1.4000000000000001,\n 1.4099999999999999,\n 1.4199999999999999,\n 1.4299999999999999,\n 1.4399999999999999,\n 1.45,\n 1.46,\n 1.47,\n 1.48,\n 1.49,\n 1.5,\n 1.51,\n 1.52,\n 1.53,\n 1.54,\n 1.55,\n 1.5600000000000001,\n 1.5700000000000001,\n 1.5800000000000001,\n 1.5900000000000001,\n 1.6000000000000001,\n 1.6100000000000001,\n 1.6200000000000001,\n 1.6300000000000001,\n 1.6400000000000001,\n 1.6500000000000001,\n 1.6600000000000001,\n 1.6699999999999999,\n 1.6799999999999999,\n 1.6899999999999999,\n 1.7,\n 1.71,\n 1.72,\n 1.73,\n 1.74,\n 1.75,\n 1.76,\n 1.77,\n 1.78,\n 1.79,\n 1.8,\n 1.8100000000000001,\n 1.8200000000000001,\n 1.8300000000000001,\n 1.8400000000000001,\n 1.8500000000000001,\n 1.8600000000000001,\n 1.8700000000000001,\n 1.8800000000000001,\n 1.8900000000000001,\n 1.9000000000000001,\n 1.9100000000000001,\n 1.9199999999999999,\n 1.9299999999999999,\n 1.9399999999999999,\n 1.95,\n 1.96,\n 1.97,\n 1.98,\n 1.99],\n 'y': [0.0,\n 0.062790519529313374,\n 0.12533323356430426,\n 0.1873813145857246,\n 0.24868988716485479,\n 0.3090169943749474,\n 0.36812455268467792,\n 0.42577929156507272,\n 0.48175367410171532,\n 0.53582679497899666,\n 0.58778525229247314,\n 0.63742398974868963,\n 0.68454710592868862,\n 0.72896862742141155,\n 0.77051324277578925,\n 0.80901699437494734,\n 0.84432792550201508,\n 0.87630668004386369,\n 0.90482705246601958,\n 0.92977648588825135,\n 0.95105651629515353,\n 0.96858316112863108,\n 0.98228725072868861,\n 0.99211470131447788,\n 0.99802672842827156,\n 1.0,\n 0.99802672842827156,\n 0.99211470131447776,\n 0.98228725072868861,\n 0.96858316112863119,\n 0.95105651629515364,\n 0.92977648588825135,\n 0.90482705246601947,\n 0.87630668004386347,\n 0.84432792550201496,\n 0.80901699437494745,\n 0.77051324277578925,\n 0.72896862742141155,\n 0.68454710592868884,\n 0.63742398974868986,\n 0.58778525229247325,\n 0.53582679497899666,\n 0.4817536741017156,\n 0.42577929156507288,\n 0.36812455268467814,\n 0.30901699437494751,\n 0.24868988716485479,\n 0.18738131458572455,\n 0.12533323356430454,\n 0.062790519529313582,\n 1.2246467991473532e-16,\n -0.062790519529313332,\n -0.12533323356430431,\n -0.18738131458572477,\n -0.24868988716485502,\n -0.30901699437494773,\n -0.36812455268467836,\n -0.42577929156507272,\n -0.48175367410171499,\n -0.53582679497899643,\n -0.58778525229247303,\n -0.63742398974868963,\n -0.68454710592868873,\n -0.72896862742141133,\n -0.77051324277578936,\n -0.80901699437494734,\n -0.8443279255020153,\n -0.87630668004386358,\n -0.9048270524660198,\n -0.92977648588825146,\n -0.95105651629515353,\n -0.96858316112863097,\n -0.98228725072868872,\n -0.99211470131447776,\n -0.99802672842827156,\n -1.0,\n -0.99802672842827156,\n -0.99211470131447788,\n -0.98228725072868872,\n -0.96858316112863108,\n -0.95105651629515364,\n -0.92977648588825124,\n -0.90482705246601958,\n -0.87630668004386336,\n -0.84432792550201552,\n -0.80901699437494756,\n -0.77051324277578959,\n -0.72896862742141155,\n -0.68454710592868895,\n -0.63742398974868963,\n -0.58778525229247325,\n -0.53582679497899632,\n -0.48175367410171532,\n -0.42577929156507222,\n -0.36812455268467781,\n -0.30901699437494762,\n -0.24868988716485535,\n -0.18738131458572468,\n -0.12533323356430467,\n -0.062790519529313263,\n -2.4492935982947064e-16,\n 0.062790519529312763,\n 0.12533323356430418,\n 0.18738131458572421,\n 0.24868988716485491,\n 0.30901699437494717,\n 0.36812455268467825,\n 0.4257792915650726,\n 0.48175367410171571,\n 0.53582679497899666,\n 0.58778525229247369,\n 0.63742398974868997,\n 0.68454710592868928,\n 0.72896862742141177,\n 0.77051324277578925,\n 0.80901699437494778,\n 0.84432792550201474,\n 0.87630668004386314,\n 0.90482705246601935,\n 0.92977648588825113,\n 0.95105651629515342,\n 0.96858316112863097,\n 0.98228725072868861,\n 0.99211470131447776,\n 0.99802672842827156,\n 1.0,\n 0.99802672842827156,\n 0.99211470131447788,\n 0.98228725072868861,\n 0.96858316112863108,\n 0.95105651629515364,\n 0.92977648588825168,\n 0.90482705246601924,\n 0.87630668004386347,\n 0.84432792550201508,\n 0.80901699437494767,\n 0.77051324277578859,\n 0.728968627421411,\n 0.68454710592868839,\n 0.63742398974868963,\n 0.58778525229247336,\n 0.53582679497899721,\n 0.48175367410171616,\n 0.42577929156507394,\n 0.36812455268467797,\n 0.30901699437494778,\n 0.24868988716485549,\n 0.18738131458572568,\n 0.1253332335643039,\n 0.062790519529313374,\n 3.6739403974420594e-16,\n -0.062790519529312652,\n -0.12533323356430318,\n -0.18738131458572496,\n -0.24868988716485474,\n -0.30901699437494706,\n -0.36812455268467725,\n -0.42577929156507327,\n -0.4817536741017156,\n -0.53582679497899666,\n -0.5877852522924728,\n -0.63742398974869052,\n -0.68454710592868917,\n -0.72896862742141177,\n -0.77051324277578914,\n -0.80901699437494723,\n -0.84432792550201563,\n -0.87630668004386303,\n -0.90482705246601891,\n -0.92977648588825135,\n -0.95105651629515342,\n -0.96858316112863097,\n -0.9822872507286885,\n -0.99211470131447788,\n -0.99802672842827156,\n -1.0,\n -0.99802672842827156,\n -0.99211470131447799,\n -0.98228725072868861,\n -0.96858316112863119,\n -0.95105651629515375,\n -0.92977648588825168,\n -0.90482705246601924,\n -0.87630668004386347,\n -0.84432792550201519,\n -0.80901699437494767,\n -0.77051324277578859,\n -0.72896862742141111,\n -0.6845471059286885,\n -0.63742398974868975,\n -0.58778525229247347,\n -0.53582679497899577,\n -0.48175367410171627,\n -0.42577929156507405,\n -0.36812455268467809,\n -0.3090169943749479,\n -0.2486898871648556,\n -0.18738131458572582,\n -0.12533323356430404,\n -0.062790519529313499]},\n {'name': '_line2',\n 'x': [0.0,\n 0.10000000000000001,\n 0.20000000000000001,\n 0.30000000000000004,\n 0.40000000000000002,\n 0.5,\n 0.60000000000000009,\n 0.70000000000000007,\n 0.80000000000000004,\n 0.90000000000000002,\n 1.0,\n 1.1000000000000001,\n 1.2000000000000002,\n 1.3,\n 1.4000000000000001,\n 1.5,\n 1.6000000000000001,\n 1.7000000000000002,\n 1.8,\n 1.9000000000000001],\n 'y': [0.0,\n 0.095310179804324935,\n 0.18232155679395459,\n 0.26236426446749106,\n 0.33647223662121289,\n 0.40546510810816438,\n 0.47000362924573563,\n 0.53062825106217049,\n 0.58778666490211906,\n 0.64185388617239469,\n 0.69314718055994529,\n 0.74193734472937733,\n 0.78845736036427028,\n 0.83290912293510388,\n 0.87546873735390007,\n 0.91629073187415511,\n 0.95551144502743635,\n 0.99325177301028345,\n 1.0296194171811581,\n 1.0647107369924285]},\n {'name': '_line3',\n 'x': [0.0,\n 0.01,\n 0.02,\n 0.029999999999999999,\n 0.040000000000000001,\n 0.050000000000000003,\n 0.059999999999999998,\n 0.070000000000000007,\n 0.080000000000000002,\n 0.089999999999999997,\n 0.10000000000000001,\n 0.11,\n 0.12,\n 0.13,\n 0.14000000000000001,\n 0.14999999999999999,\n 0.16,\n 0.17000000000000001,\n 0.17999999999999999,\n 0.19,\n 0.20000000000000001,\n 0.20999999999999999,\n 0.22,\n 0.23000000000000001,\n 0.23999999999999999,\n 0.25,\n 0.26000000000000001,\n 0.27000000000000002,\n 0.28000000000000003,\n 0.28999999999999998,\n 0.29999999999999999,\n 0.31,\n 0.32000000000000001,\n 0.33000000000000002,\n 0.34000000000000002,\n 0.35000000000000003,\n 0.35999999999999999,\n 0.37,\n 0.38,\n 0.39000000000000001,\n 0.40000000000000002,\n 0.41000000000000003,\n 0.41999999999999998,\n 0.42999999999999999,\n 0.44,\n 0.45000000000000001,\n 0.46000000000000002,\n 0.47000000000000003,\n 0.47999999999999998,\n 0.48999999999999999,\n 0.5,\n 0.51000000000000001,\n 0.52000000000000002,\n 0.53000000000000003,\n 0.54000000000000004,\n 0.55000000000000004,\n 0.56000000000000005,\n 0.57000000000000006,\n 0.57999999999999996,\n 0.58999999999999997,\n 0.59999999999999998,\n 0.60999999999999999,\n 0.62,\n 0.63,\n 0.64000000000000001,\n 0.65000000000000002,\n 0.66000000000000003,\n 0.67000000000000004,\n 0.68000000000000005,\n 0.69000000000000006,\n 0.70000000000000007,\n 0.70999999999999996,\n 0.71999999999999997,\n 0.72999999999999998,\n 0.73999999999999999,\n 0.75,\n 0.76000000000000001,\n 0.77000000000000002,\n 0.78000000000000003,\n 0.79000000000000004,\n 0.80000000000000004,\n 0.81000000000000005,\n 0.82000000000000006,\n 0.83000000000000007,\n 0.83999999999999997,\n 0.84999999999999998,\n 0.85999999999999999,\n 0.87,\n 0.88,\n 0.89000000000000001,\n 0.90000000000000002,\n 0.91000000000000003,\n 0.92000000000000004,\n 0.93000000000000005,\n 0.94000000000000006,\n 0.95000000000000007,\n 0.95999999999999996,\n 0.96999999999999997,\n 0.97999999999999998,\n 0.98999999999999999,\n 1.0,\n 1.01,\n 1.02,\n 1.03,\n 1.04,\n 1.05,\n 1.0600000000000001,\n 1.0700000000000001,\n 1.0800000000000001,\n 1.0900000000000001,\n 1.1000000000000001,\n 1.1100000000000001,\n 1.1200000000000001,\n 1.1300000000000001,\n 1.1400000000000001,\n 1.1500000000000001,\n 1.1599999999999999,\n 1.1699999999999999,\n 1.1799999999999999,\n 1.1899999999999999,\n 1.2,\n 1.21,\n 1.22,\n 1.23,\n 1.24,\n 1.25,\n 1.26,\n 1.27,\n 1.28,\n 1.29,\n 1.3,\n 1.3100000000000001,\n 1.3200000000000001,\n 1.3300000000000001,\n 1.3400000000000001,\n 1.3500000000000001,\n 1.3600000000000001,\n 1.3700000000000001,\n 1.3800000000000001,\n 1.3900000000000001,\n 1.4000000000000001,\n 1.4099999999999999,\n 1.4199999999999999,\n 1.4299999999999999,\n 1.4399999999999999,\n 1.45,\n 1.46,\n 1.47,\n 1.48,\n 1.49,\n 1.5,\n 1.51,\n 1.52,\n 1.53,\n 1.54,\n 1.55,\n 1.5600000000000001,\n 1.5700000000000001,\n 1.5800000000000001,\n 1.5900000000000001,\n 1.6000000000000001,\n 1.6100000000000001,\n 1.6200000000000001,\n 1.6300000000000001,\n 1.6400000000000001,\n 1.6500000000000001,\n 1.6600000000000001,\n 1.6699999999999999,\n 1.6799999999999999,\n 1.6899999999999999,\n 1.7,\n 1.71,\n 1.72,\n 1.73,\n 1.74,\n 1.75,\n 1.76,\n 1.77,\n 1.78,\n 1.79,\n 1.8,\n 1.8100000000000001,\n 1.8200000000000001,\n 1.8300000000000001,\n 1.8400000000000001,\n 1.8500000000000001,\n 1.8600000000000001,\n 1.8700000000000001,\n 1.8800000000000001,\n 1.8900000000000001,\n 1.9000000000000001,\n 1.9100000000000001,\n 1.9199999999999999,\n 1.9299999999999999,\n 1.9399999999999999,\n 1.95,\n 1.96,\n 1.97,\n 1.98,\n 1.99],\n 'y': [0.0,\n 0.062165743421020596,\n 0.12285146926097672,\n 0.18184335981016436,\n 0.23893861721197537,\n 0.29394605772022159,\n 0.34668664765999591,\n 0.39699398009920667,\n 0.4447146914951135,\n 0.48970881783523779,\n 0.53185009004393646,\n 0.57102616867378042,\n 0.60713881814373882,\n 0.64010402102317443,\n 0.66985203309097185,\n 0.69632738012194328,\n 0.71948879756726813,\n 0.73930911450139214,\n 0.75577508340393029,\n 0.76888715753105119,\n 0.77865921780605296,\n 0.78511825132287161,\n 0.78830398370865495,\n 0.78826846773191139,\n 0.78507563067078134,\n 0.77880078307140488,\n 0.76953009162896391,\n 0.75736001901360417,\n 0.74239673353998659,\n 0.72475549164263386,\n 0.70455999616952891,\n 0.68194173354365373,\n 0.65703929286642604,\n 0.62999767004847074,\n 0.60096756005205387,\n 0.5701046403160569,\n 0.53756884840888908,\n 0.50352365691755985,\n 0.46813534853263294,\n 0.43157229422939808,\n 0.39400423737576057,\n 0.35560158651755347,\n 0.31653471950275153,\n 0.27697330150793059,\n 0.23708561942387243,\n 0.19703793494301369,\n 0.15699385857013562,\n 0.11711374664987216,\n 0.077554123370951619,\n 0.038467129568209538,\n 7.42785831001809e-17,\n -0.037705429368677892,\n -0.074513182697526562,\n -0.11029357299002086,\n -0.14492359712840394,\n -0.178287296308974,\n -0.21027608111877885,\n -0.24078902065151586,\n -0.26973309521643124,\n -0.2970234123487005,\n -0.32258338598257219,\n -0.34634487879888559,\n -0.36824830790587049,\n -0.38824271415589529,\n -0.40628579554051591,\n -0.42234390524133192,\n -0.43639201504432457,\n -0.44841364495009212,\n -0.45840075993135643,\n -0.46635363490187992,\n -0.47228068906722837,\n -0.47619829092729044,\n -0.47813053529290755,\n -0.47810899376410282,\n -0.47617244019506066,\n -0.47236655274101469,\n -0.46674359414443878,\n -0.45936207197229401,\n -0.45028638056251219,\n -0.43958642647636065,\n -0.42733723928383482,\n -0.41361856953180914,\n -0.39851447575939558,\n -0.38211290243192081,\n -0.36450525066426415,\n -0.34578594359613163,\n -0.32605198826640425,\n -0.30540253581112531,\n -0.28393844178030153,\n -0.26176182833265149,\n -0.23897565002509305,\n -0.21568326486535064,\n -0.19198801224195713,\n -0.16799279928639099,\n -0.14379969715753954,\n -0.11950954866940107,\n -0.095221588609376448,\n -0.071033078016965234,\n -0.047038953611618299,\n -0.023331493474257361,\n -9.0104476020544775e-17,\n 0.022869498949732101,\n 0.045194529858818715,\n 0.066896433587700643,\n 0.087900604974218713,\n 0.10813671144866356,\n 0.1275388902027601,\n 0.14604592354732276,\n 0.16360139218795283,\n 0.18015380624195493,\n 0.19565671391234482,\n 0.21006878782598024,\n 0.22335388913220877,\n 0.23548110954559864,\n 0.24642479160106115,\n 0.2561645274716351,\n 0.26468513677815952,\n 0.27197662389572586,\n 0.27803411533393801,\n 0.2828577778364218,\n 0.28645271790948318,\n 0.28882886355015802,\n 0.29000082899996177,\n 0.28998776340228466,\n 0.28881318428848463,\n 0.28650479686019009,\n 0.28309430007307207,\n 0.2786171805603177,\n 0.27311249546219446,\n 0.26662264525142604,\n 0.25919313766259983,\n 0.25087234384752405,\n 0.24171124788738035,\n 0.23176319079674212,\n 0.22108361015411482,\n 0.20972977648871718,\n 0.19776052754383772,\n 0.18523600152343281,\n 0.17221737041078325,\n 0.15876657442618819,\n 0.14494605866497509,\n 0.13081851292775601,\n 0.1164466157220316,\n 0.10189278337814718,\n 0.087218925183439405,\n 0.072486205396410944,\n 0.057754812958130106,\n 0.043083739671049108,\n 0.028530567566246629,\n 0.014151266129022342,\n 8.1976690925703258e-17,\n -0.013871052285278363,\n -0.027411868010671404,\n -0.040574737996370604,\n -0.053314411924152427,\n -0.065588230934112562,\n -0.077356247213697008,\n -0.088581330357498655,\n -0.099229260333664276,\n -0.10926880694967485,\n -0.11867179576646029,\n -0.1274131604651251,\n -0.13547098172474095,\n -0.14282651272255487,\n -0.14946419141933984,\n -0.15537163984234573,\n -0.16053965062618583,\n -0.16496216111788936,\n -0.16863621539611176,\n -0.17156191459597445,\n -0.1737423559701157,\n -0.17518356115312753,\n -0.17589439413055735,\n -0.17588646944497877,\n -0.17517405120020096,\n -0.17377394345044514,\n -0.17170537258420662,\n -0.16898986233252339,\n -0.16565110204844838,\n -0.16171480891867487,\n -0.1572085847794841,\n -0.15216176821749336,\n -0.14660528264109668,\n -0.14057148101105291,\n -0.13409398791842592,\n -0.12720753969508478,\n -0.11994782323628231,\n -0.11235131420653809,\n -0.10445511528922737,\n -0.096296795127030863,\n -0.087914228584813431,\n -0.079345438948697292,\n -0.070628442655187362,\n -0.061801097122304069,\n -0.052900952230938332,\n -0.043965105979150605,\n -0.035030064805074417,\n -0.026131609045568792,\n -0.017304663967931452,\n -0.0085831767810049826]}]"
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e5f1210>"
    }
    ],
    "prompt_number": 57
    "prompt_number": 22
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Or you can get the string to produce the graph using Plotly."
    "source": "Next up, an example from [pylab](http://matplotlib.org/examples/pylab_examples/arctest.html)."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "tls.mpl_to_plotly(fig3).to_string(pretty = False)",
    "input": "fig4 = plt.figure()\n\nfrom pylab import *\n\ndef f(t):\n 'a damped exponential'\n s1 = cos(2*pi*t)\n e1 = exp(-t)\n return multiply(s1,e1)\n\nt1 = arange(0.0, 5.0, .2)\n\n\nl = plot(t1, f(t1), 'ro')\nsetp(l, 'markersize', 30)\nsetp(l, 'markerfacecolor', 'b')\n\npy.iplot_mpl(fig4)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3316\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 58,
    "text": "\"Figure(\\n data=Data([\\n Scatter(\\n x=[0.0, 0.01, 0.02, 0.029999999999999999, 0.040000000000000001, 0.050000000000000003, 0.059999999999999998, 0.070000000000000007, 0.080000000000000002, 0.089999999999999997, 0.10000000000000001, 0.11, 0.12, 0.13, 0.14000000000000001, 0.14999999999999999, 0.16, 0.17000000000000001, 0.17999999999999999, 0.19, 0.20000000000000001, 0.20999999999999999, 0.22, 0.23000000000000001, 0.23999999999999999, 0.25, 0.26000000000000001, 0.27000000000000002, 0.28000000000000003, 0.28999999999999998, 0.29999999999999999, 0.31, 0.32000000000000001, 0.33000000000000002, 0.34000000000000002, 0.35000000000000003, 0.35999999999999999, 0.37, 0.38, 0.39000000000000001, 0.40000000000000002, 0.41000000000000003, 0.41999999999999998, 0.42999999999999999, 0.44, 0.45000000000000001, 0.46000000000000002, 0.47000000000000003, 0.47999999999999998, 0.48999999999999999, 0.5, 0.51000000000000001, 0.52000000000000002, 0.53000000000000003, 0.54000000000000004, 0.55000000000000004, 0.56000000000000005, 0.57000000000000006, 0.57999999999999996, 0.58999999999999997, 0.59999999999999998, 0.60999999999999999, 0.62, 0.63, 0.64000000000000001, 0.65000000000000002, 0.66000000000000003, 0.67000000000000004, 0.68000000000000005, 0.69000000000000006, 0.70000000000000007, 0.70999999999999996, 0.71999999999999997, 0.72999999999999998, 0.73999999999999999, 0.75, 0.76000000000000001, 0.77000000000000002, 0.78000000000000003, 0.79000000000000004, 0.80000000000000004, 0.81000000000000005, 0.82000000000000006, 0.83000000000000007, 0.83999999999999997, 0.84999999999999998, 0.85999999999999999, 0.87, 0.88, 0.89000000000000001, 0.90000000000000002, 0.91000000000000003, 0.92000000000000004, 0.93000000000000005, 0.94000000000000006, 0.95000000000000007, 0.95999999999999996, 0.96999999999999997, 0.97999999999999998, 0.98999999999999999, 1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.0600000000000001, 1.0700000000000001, 1.0800000000000001, 1.0900000000000001, 1.1000000000000001, 1.1100000000000001, 1.1200000000000001, 1.1300000000000001, 1.1400000000000001, 1.1500000000000001, 1.1599999999999999, 1.1699999999999999, 1.1799999999999999, 1.1899999999999999, 1.2, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3, 1.3100000000000001, 1.3200000000000001, 1.3300000000000001, 1.3400000000000001, 1.3500000000000001, 1.3600000000000001, 1.3700000000000001, 1.3800000000000001, 1.3900000000000001, 1.4000000000000001, 1.4099999999999999, 1.4199999999999999, 1.4299999999999999, 1.4399999999999999, 1.45, 1.46, 1.47, 1.48, 1.49, 1.5, 1.51, 1.52, 1.53, 1.54, 1.55, 1.5600000000000001, 1.5700000000000001, 1.5800000000000001, 1.5900000000000001, 1.6000000000000001, 1.6100000000000001, 1.6200000000000001, 1.6300000000000001, 1.6400000000000001, 1.6500000000000001, 1.6600000000000001, 1.6699999999999999, 1.6799999999999999, 1.6899999999999999, 1.7, 1.71, 1.72, 1.73, 1.74, 1.75, 1.76, 1.77, 1.78, 1.79, 1.8, 1.8100000000000001, 1.8200000000000001, 1.8300000000000001, 1.8400000000000001, 1.8500000000000001, 1.8600000000000001, 1.8700000000000001, 1.8800000000000001, 1.8900000000000001, 1.9000000000000001, 1.9100000000000001, 1.9199999999999999, 1.9299999999999999, 1.9399999999999999, 1.95, 1.96, 1.97, 1.98, 1.99],\\n y=[1.0, 0.99004983374916811, 0.98019867330675525, 0.97044553354850815, 0.96078943915232318, 0.95122942450071402, 0.94176453358424872, 0.93239381990594827, 0.92311634638663576, 0.91393118527122819, 0.90483741803595952, 0.89583413529652822, 0.88692043671715748, 0.8780954309205613, 0.86935823539880586, 0.86070797642505781, 0.85214378896621135, 0.8436648165963837, 0.835270211411272, 0.82695913394336229, 0.81873075307798182, 0.81058424597018708, 0.80251879796247849, 0.79453360250333405, 0.78662786106655347, 0.77880078307140488, 0.77105158580356625, 0.76337949433685315, 0.75578374145572547, 0.74826356757856527, 0.74081822068171788, 0.73344695622428924, 0.72614903707369094, 0.71892373343192617, 0.71177032276260965, 0.70468808971871344, 0.69767632607103103, 0.69073433063735468, 0.68386140921235583, 0.67705687449816465, 0.67032004603563933, 0.6636502501363194, 0.65704681981505675, 0.65050909472331653, 0.64403642108314141, 0.63762815162177333, 0.63128364550692595, 0.62500226828270078, 0.61878339180614084, 0.61262639418441611, 0.60653065971263342, 0.6004955788122659, 0.59452054797019438, 0.58860496967835518, 0.58274825237398964, 0.57694981038048665, 0.57120906384881487, 0.56552543869953709, 0.55989836656540204, 0.5543272847345071, 0.54881163609402639, 0.54335086907449981, 0.53794443759467447, 0.53259180100689718, 0.52729242404304855, 0.52204577676101604, 0.51685133449169918, 0.51170857778654244, 0.50661699236558955, 0.50157606906605545, 0.49658530379140947, 0.4916441974609651, 0.48675225595997168, 0.48190899009020244, 0.47711391552103438, 0.47236655274101469, 0.46766642700990924, 0.46301306831122807, 0.45840601130522352, 0.45384479528235583, 0.44932896411722156, 0.44485806622294111, 0.44043165450599925, 0.43604928632153556, 0.43171052342907973, 0.42741493194872671, 0.42316208231774882, 0.418951549247639, 0.41478291168158138, 0.4106557527523455, 0.40656965974059911, 0.40252422403363597, 0.39851904108451414, 0.39455371037160109, 0.39062783535852108, 0.38674102345450118, 0.38289288597511206, 0.37908303810339883, 0.37531109885139957, 0.37157669102204571, 0.36787944117144233, 0.36421897957152333, 0.3605949401730783, 0.35700696056914738, 0.35345468195878016, 0.34993774911115533, 0.3464558103300574, 0.34300851741870664, 0.33959552564493911, 0.33621649370673334, 0.33287108369807955, 0.32955896107518906, 0.32627979462303947, 0.32303325642225289, 0.31981902181630384, 0.31663676937905316, 0.31348618088260533, 0.31036694126548503, 0.30727873860113125, 0.30422126406670408, 0.30119421191220214, 0.29819727942988739, 0.29523016692401421, 0.29229257768085942, 0.28938421793905061, 0.28650479686019009, 0.2836540264997704, 0.28083162177837978, 0.27803730045319414, 0.27527078308975234, 0.27253179303401259, 0.26982005638468681, 0.26713530196585034, 0.26447726129982396, 0.26184566858032599, 0.25924026064589151, 0.25666077695355588, 0.25410695955280027, 0.25157855305975646, 0.24907530463166816, 0.24659696394160643, 0.24414328315343711, 0.24171401689703645, 0.23930892224375455, 0.23692775868212176, 0.23457028809379765, 0.23223627472975883, 0.22992548518672384, 0.22763768838381274, 0.22537265553943872, 0.22313016014842982, 0.2209099779593782, 0.21871188695221475, 0.21653566731600707, 0.21438110142697794, 0.21224797382674304, 0.21013607120076472, 0.20804518235702046, 0.20597509820488344, 0.20392561173421342, 0.20189651799465538, 0.19988761407514449, 0.19789869908361465, 0.19592957412690934, 0.19398004229089189, 0.19204990862075408, 0.1901389801015205, 0.1882470656387468, 0.18637397603940997, 0.18451952399298926, 0.18268352405273466, 0.1808657926171221, 0.17906614791149322, 0.17728440996987782, 0.17552040061699686, 0.17377394345044514, 0.17204486382305054, 0.17033298882540943, 0.1686381472685955, 0.16696016966704069, 0.16529888822158653, 0.16365413680270405, 0.16202575093388075, 0.16041356777517274, 0.15881742610692068, 0.15723716631362761, 0.15567263036799731, 0.1541236618151314, 0.15259010575688386, 0.15107180883637084, 0.14956861922263504, 0.14808038659546244, 0.14660696213035015, 0.14514819848362373, 0.14370394977770293, 0.14227407158651359, 0.140858420921045, 0.13945685621505094, 0.13806923731089282, 0.13669542544552385],\\n name='_line0',\\n mode='lines',\\n line=Line(\\n dash='solid',\\n color='#4C72B0',\\n width=1.75,\\n opacity=1\\n )\\n ),\\n Scatter(\\n x=[0.0, 0.01, 0.02, 0.029999999999999999, 0.040000000000000001, 0.050000000000000003, 0.059999999999999998, 0.070000000000000007, 0.080000000000000002, 0.089999999999999997, 0.10000000000000001, 0.11, 0.12, 0.13, 0.14000000000000001, 0.14999999999999999, 0.16, 0.17000000000000001, 0.17999999999999999, 0.19, 0.20000000000000001, 0.20999999999999999, 0.22, 0.23000000000000001, 0.23999999999999999, 0.25, 0.26000000000000001, 0.27000000000000002, 0.28000000000000003, 0.28999999999999998, 0.29999999999999999, 0.31, 0.32000000000000001, 0.33000000000000002, 0.34000000000000002, 0.35000000000000003, 0.35999999999999999, 0.37, 0.38, 0.39000000000000001, 0.40000000000000002, 0.41000000000000003, 0.41999999999999998, 0.42999999999999999, 0.44, 0.45000000000000001, 0.46000000000000002, 0.47000000000000003, 0.47999999999999998, 0.48999999999999999, 0.5, 0.51000000000000001, 0.52000000000000002, 0.53000000000000003, 0.54000000000000004, 0.55000000000000004, 0.56000000000000005, 0.57000000000000006, 0.57999999999999996, 0.58999999999999997, 0.59999999999999998, 0.60999999999999999, 0.62, 0.63, 0.64000000000000001, 0.65000000000000002, 0.66000000000000003, 0.67000000000000004, 0.68000000000000005, 0.69000000000000006, 0.70000000000000007, 0.70999999999999996, 0.71999999999999997, 0.72999999999999998, 0.73999999999999999, 0.75, 0.76000000000000001, 0.77000000000000002, 0.78000000000000003, 0.79000000000000004, 0.80000000000000004, 0.81000000000000005, 0.82000000000000006, 0.83000000000000007, 0.83999999999999997, 0.84999999999999998, 0.85999999999999999, 0.87, 0.88, 0.89000000000000001, 0.90000000000000002, 0.91000000000000003, 0.92000000000000004, 0.93000000000000005, 0.94000000000000006, 0.95000000000000007, 0.95999999999999996, 0.96999999999999997, 0.97999999999999998, 0.98999999999999999, 1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.0600000000000001, 1.0700000000000001, 1.0800000000000001, 1.0900000000000001, 1.1000000000000001, 1.1100000000000001, 1.1200000000000001, 1.1300000000000001, 1.1400000000000001, 1.1500000000000001, 1.1599999999999999, 1.1699999999999999, 1.1799999999999999, 1.1899999999999999, 1.2, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3, 1.3100000000000001, 1.3200000000000001, 1.3300000000000001, 1.3400000000000001, 1.3500000000000001, 1.3600000000000001, 1.3700000000000001, 1.3800000000000001, 1.3900000000000001, 1.4000000000000001, 1.4099999999999999, 1.4199999999999999, 1.4299999999999999, 1.4399999999999999, 1.45, 1.46, 1.47, 1.48, 1.49, 1.5, 1.51, 1.52, 1.53, 1.54, 1.55, 1.5600000000000001, 1.5700000000000001, 1.5800000000000001, 1.5900000000000001, 1.6000000000000001, 1.6100000000000001, 1.6200000000000001, 1.6300000000000001, 1.6400000000000001, 1.6500000000000001, 1.6600000000000001, 1.6699999999999999, 1.6799999999999999, 1.6899999999999999, 1.7, 1.71, 1.72, 1.73, 1.74, 1.75, 1.76, 1.77, 1.78, 1.79, 1.8, 1.8100000000000001, 1.8200000000000001, 1.8300000000000001, 1.8400000000000001, 1.8500000000000001, 1.8600000000000001, 1.8700000000000001, 1.8800000000000001, 1.8900000000000001, 1.9000000000000001, 1.9100000000000001, 1.9199999999999999, 1.9299999999999999, 1.9399999999999999, 1.95, 1.96, 1.97, 1.98, 1.99],\\n y=[0.0, 0.062790519529313374, 0.12533323356430426, 0.1873813145857246, 0.24868988716485479, 0.3090169943749474, 0.36812455268467792, 0.42577929156507272, 0.48175367410171532, 0.53582679497899666, 0.58778525229247314, 0.63742398974868963, 0.68454710592868862, 0.72896862742141155, 0.77051324277578925, 0.80901699437494734, 0.84432792550201508, 0.87630668004386369, 0.90482705246601958, 0.92977648588825135, 0.95105651629515353, 0.96858316112863108, 0.98228725072868861, 0.99211470131447788, 0.99802672842827156, 1.0, 0.99802672842827156, 0.99211470131447776, 0.98228725072868861, 0.96858316112863119, 0.95105651629515364, 0.92977648588825135, 0.90482705246601947, 0.87630668004386347, 0.84432792550201496, 0.80901699437494745, 0.77051324277578925, 0.72896862742141155, 0.68454710592868884, 0.63742398974868986, 0.58778525229247325, 0.53582679497899666, 0.4817536741017156, 0.42577929156507288, 0.36812455268467814, 0.30901699437494751, 0.24868988716485479, 0.18738131458572455, 0.12533323356430454, 0.062790519529313582, 1.2246467991473532e-16, -0.062790519529313332, -0.12533323356430431, -0.18738131458572477, -0.24868988716485502, -0.30901699437494773, -0.36812455268467836, -0.42577929156507272, -0.48175367410171499, -0.53582679497899643, -0.58778525229247303, -0.63742398974868963, -0.68454710592868873, -0.72896862742141133, -0.77051324277578936, -0.80901699437494734, -0.8443279255020153, -0.87630668004386358, -0.9048270524660198, -0.92977648588825146, -0.95105651629515353, -0.96858316112863097, -0.98228725072868872, -0.99211470131447776, -0.99802672842827156, -1.0, -0.99802672842827156, -0.99211470131447788, -0.98228725072868872, -0.96858316112863108, -0.95105651629515364, -0.92977648588825124, -0.90482705246601958, -0.87630668004386336, -0.84432792550201552, -0.80901699437494756, -0.77051324277578959, -0.72896862742141155, -0.68454710592868895, -0.63742398974868963, -0.58778525229247325, -0.53582679497899632, -0.48175367410171532, -0.42577929156507222, -0.36812455268467781, -0.30901699437494762, -0.24868988716485535, -0.18738131458572468, -0.12533323356430467, -0.062790519529313263, -2.4492935982947064e-16, 0.062790519529312763, 0.12533323356430418, 0.18738131458572421, 0.24868988716485491, 0.30901699437494717, 0.36812455268467825, 0.4257792915650726, 0.48175367410171571, 0.53582679497899666, 0.58778525229247369, 0.63742398974868997, 0.68454710592868928, 0.72896862742141177, 0.77051324277578925, 0.80901699437494778, 0.84432792550201474, 0.87630668004386314, 0.90482705246601935, 0.92977648588825113, 0.95105651629515342, 0.96858316112863097, 0.98228725072868861, 0.99211470131447776, 0.99802672842827156, 1.0, 0.99802672842827156, 0.99211470131447788, 0.98228725072868861, 0.96858316112863108, 0.95105651629515364, 0.92977648588825168, 0.90482705246601924, 0.87630668004386347, 0.84432792550201508, 0.80901699437494767, 0.77051324277578859, 0.728968627421411, 0.68454710592868839, 0.63742398974868963, 0.58778525229247336, 0.53582679497899721, 0.48175367410171616, 0.42577929156507394, 0.36812455268467797, 0.30901699437494778, 0.24868988716485549, 0.18738131458572568, 0.1253332335643039, 0.062790519529313374, 3.6739403974420594e-16, -0.062790519529312652, -0.12533323356430318, -0.18738131458572496, -0.24868988716485474, -0.30901699437494706, -0.36812455268467725, -0.42577929156507327, -0.4817536741017156, -0.53582679497899666, -0.5877852522924728, -0.63742398974869052, -0.68454710592868917, -0.72896862742141177, -0.77051324277578914, -0.80901699437494723, -0.84432792550201563, -0.87630668004386303, -0.90482705246601891, -0.92977648588825135, -0.95105651629515342, -0.96858316112863097, -0.9822872507286885, -0.99211470131447788, -0.99802672842827156, -1.0, -0.99802672842827156, -0.99211470131447799, -0.98228725072868861, -0.96858316112863119, -0.95105651629515375, -0.92977648588825168, -0.90482705246601924, -0.87630668004386347, -0.84432792550201519, -0.80901699437494767, -0.77051324277578859, -0.72896862742141111, -0.6845471059286885, -0.63742398974868975, -0.58778525229247347, -0.53582679497899577, -0.48175367410171627, -0.42577929156507405, -0.36812455268467809, -0.3090169943749479, -0.2486898871648556, -0.18738131458572582, -0.12533323356430404, -0.062790519529313499],\\n name='_line1',\\n mode='lines+markers',\\n marker=Marker(\\n symbol='dot',\\n line=Line(\\n color='#000000',\\n width=0\\n ),\\n size=7,\\n color='#007F00',\\n opacity=1\\n ),\\n line=Line(\\n dash='dash',\\n color='#007F00',\\n width=1.75,\\n opacity=1\\n )\\n ),\\n Scatter(\\n x=[0.0, 0.10000000000000001, 0.20000000000000001, 0.30000000000000004, 0.40000000000000002, 0.5, 0.60000000000000009, 0.70000000000000007, 0.80000000000000004, 0.90000000000000002, 1.0, 1.1000000000000001, 1.2000000000000002, 1.3, 1.4000000000000001, 1.5, 1.6000000000000001, 1.7000000000000002, 1.8, 1.9000000000000001],\\n y=[0.0, 0.095310179804324935, 0.18232155679395459, 0.26236426446749106, 0.33647223662121289, 0.40546510810816438, 0.47000362924573563, 0.53062825106217049, 0.58778666490211906, 0.64185388617239469, 0.69314718055994529, 0.74193734472937733, 0.78845736036427028, 0.83290912293510388, 0.87546873735390007, 0.91629073187415511, 0.95551144502743635, 0.99325177301028345, 1.0296194171811581, 1.0647107369924285],\\n name='_line2',\\n mode='markers',\\n marker=Marker(\\n symbol='dot',\\n line=Line(\\n color='#55A868',\\n width=0\\n ),\\n size=7,\\n color='#55A868',\\n opacity=1\\n )\\n ),\\n Scatter(\\n x=[0.0, 0.01, 0.02, 0.029999999999999999, 0.040000000000000001, 0.050000000000000003, 0.059999999999999998, 0.070000000000000007, 0.080000000000000002, 0.089999999999999997, 0.10000000000000001, 0.11, 0.12, 0.13, 0.14000000000000001, 0.14999999999999999, 0.16, 0.17000000000000001, 0.17999999999999999, 0.19, 0.20000000000000001, 0.20999999999999999, 0.22, 0.23000000000000001, 0.23999999999999999, 0.25, 0.26000000000000001, 0.27000000000000002, 0.28000000000000003, 0.28999999999999998, 0.29999999999999999, 0.31, 0.32000000000000001, 0.33000000000000002, 0.34000000000000002, 0.35000000000000003, 0.35999999999999999, 0.37, 0.38, 0.39000000000000001, 0.40000000000000002, 0.41000000000000003, 0.41999999999999998, 0.42999999999999999, 0.44, 0.45000000000000001, 0.46000000000000002, 0.47000000000000003, 0.47999999999999998, 0.48999999999999999, 0.5, 0.51000000000000001, 0.52000000000000002, 0.53000000000000003, 0.54000000000000004, 0.55000000000000004, 0.56000000000000005, 0.57000000000000006, 0.57999999999999996, 0.58999999999999997, 0.59999999999999998, 0.60999999999999999, 0.62, 0.63, 0.64000000000000001, 0.65000000000000002, 0.66000000000000003, 0.67000000000000004, 0.68000000000000005, 0.69000000000000006, 0.70000000000000007, 0.70999999999999996, 0.71999999999999997, 0.72999999999999998, 0.73999999999999999, 0.75, 0.76000000000000001, 0.77000000000000002, 0.78000000000000003, 0.79000000000000004, 0.80000000000000004, 0.81000000000000005, 0.82000000000000006, 0.83000000000000007, 0.83999999999999997, 0.84999999999999998, 0.85999999999999999, 0.87, 0.88, 0.89000000000000001, 0.90000000000000002, 0.91000000000000003, 0.92000000000000004, 0.93000000000000005, 0.94000000000000006, 0.95000000000000007, 0.95999999999999996, 0.96999999999999997, 0.97999999999999998, 0.98999999999999999, 1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.0600000000000001, 1.0700000000000001, 1.0800000000000001, 1.0900000000000001, 1.1000000000000001, 1.1100000000000001, 1.1200000000000001, 1.1300000000000001, 1.1400000000000001, 1.1500000000000001, 1.1599999999999999, 1.1699999999999999, 1.1799999999999999, 1.1899999999999999, 1.2, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3, 1.3100000000000001, 1.3200000000000001, 1.3300000000000001, 1.3400000000000001, 1.3500000000000001, 1.3600000000000001, 1.3700000000000001, 1.3800000000000001, 1.3900000000000001, 1.4000000000000001, 1.4099999999999999, 1.4199999999999999, 1.4299999999999999, 1.4399999999999999, 1.45, 1.46, 1.47, 1.48, 1.49, 1.5, 1.51, 1.52, 1.53, 1.54, 1.55, 1.5600000000000001, 1.5700000000000001, 1.5800000000000001, 1.5900000000000001, 1.6000000000000001, 1.6100000000000001, 1.6200000000000001, 1.6300000000000001, 1.6400000000000001, 1.6500000000000001, 1.6600000000000001, 1.6699999999999999, 1.6799999999999999, 1.6899999999999999, 1.7, 1.71, 1.72, 1.73, 1.74, 1.75, 1.76, 1.77, 1.78, 1.79, 1.8, 1.8100000000000001, 1.8200000000000001, 1.8300000000000001, 1.8400000000000001, 1.8500000000000001, 1.8600000000000001, 1.8700000000000001, 1.8800000000000001, 1.8900000000000001, 1.9000000000000001, 1.9100000000000001, 1.9199999999999999, 1.9299999999999999, 1.9399999999999999, 1.95, 1.96, 1.97, 1.98, 1.99],\\n y=[0.0, 0.062165743421020596, 0.12285146926097672, 0.18184335981016436, 0.23893861721197537, 0.29394605772022159, 0.34668664765999591, 0.39699398009920667, 0.4447146914951135, 0.48970881783523779, 0.53185009004393646, 0.57102616867378042, 0.60713881814373882, 0.64010402102317443, 0.66985203309097185, 0.69632738012194328, 0.71948879756726813, 0.73930911450139214, 0.75577508340393029, 0.76888715753105119, 0.77865921780605296, 0.78511825132287161, 0.78830398370865495, 0.78826846773191139, 0.78507563067078134, 0.77880078307140488, 0.76953009162896391, 0.75736001901360417, 0.74239673353998659, 0.72475549164263386, 0.70455999616952891, 0.68194173354365373, 0.65703929286642604, 0.62999767004847074, 0.60096756005205387, 0.5701046403160569, 0.53756884840888908, 0.50352365691755985, 0.46813534853263294, 0.43157229422939808, 0.39400423737576057, 0.35560158651755347, 0.31653471950275153, 0.27697330150793059, 0.23708561942387243, 0.19703793494301369, 0.15699385857013562, 0.11711374664987216, 0.077554123370951619, 0.038467129568209538, 7.42785831001809e-17, -0.037705429368677892, -0.074513182697526562, -0.11029357299002086, -0.14492359712840394, -0.178287296308974, -0.21027608111877885, -0.24078902065151586, -0.26973309521643124, -0.2970234123487005, -0.32258338598257219, -0.34634487879888559, -0.36824830790587049, -0.38824271415589529, -0.40628579554051591, -0.42234390524133192, -0.43639201504432457, -0.44841364495009212, -0.45840075993135643, -0.46635363490187992, -0.47228068906722837, -0.47619829092729044, -0.47813053529290755, -0.47810899376410282, -0.47617244019506066, -0.47236655274101469, -0.46674359414443878, -0.45936207197229401, -0.45028638056251219, -0.43958642647636065, -0.42733723928383482, -0.41361856953180914, -0.39851447575939558, -0.38211290243192081, -0.36450525066426415, -0.34578594359613163, -0.32605198826640425, -0.30540253581112531, -0.28393844178030153, -0.26176182833265149, -0.23897565002509305, -0.21568326486535064, -0.19198801224195713, -0.16799279928639099, -0.14379969715753954, -0.11950954866940107, -0.095221588609376448, -0.071033078016965234, -0.047038953611618299, -0.023331493474257361, -9.0104476020544775e-17, 0.022869498949732101, 0.045194529858818715, 0.066896433587700643, 0.087900604974218713, 0.10813671144866356, 0.1275388902027601, 0.14604592354732276, 0.16360139218795283, 0.18015380624195493, 0.19565671391234482, 0.21006878782598024, 0.22335388913220877, 0.23548110954559864, 0.24642479160106115, 0.2561645274716351, 0.26468513677815952, 0.27197662389572586, 0.27803411533393801, 0.2828577778364218, 0.28645271790948318, 0.28882886355015802, 0.29000082899996177, 0.28998776340228466, 0.28881318428848463, 0.28650479686019009, 0.28309430007307207, 0.2786171805603177, 0.27311249546219446, 0.26662264525142604, 0.25919313766259983, 0.25087234384752405, 0.24171124788738035, 0.23176319079674212, 0.22108361015411482, 0.20972977648871718, 0.19776052754383772, 0.18523600152343281, 0.17221737041078325, 0.15876657442618819, 0.14494605866497509, 0.13081851292775601, 0.1164466157220316, 0.10189278337814718, 0.087218925183439405, 0.072486205396410944, 0.057754812958130106, 0.043083739671049108, 0.028530567566246629, 0.014151266129022342, 8.1976690925703258e-17, -0.013871052285278363, -0.027411868010671404, -0.040574737996370604, -0.053314411924152427, -0.065588230934112562, -0.077356247213697008, -0.088581330357498655, -0.099229260333664276, -0.10926880694967485, -0.11867179576646029, -0.1274131604651251, -0.13547098172474095, -0.14282651272255487, -0.14946419141933984, -0.15537163984234573, -0.16053965062618583, -0.16496216111788936, -0.16863621539611176, -0.17156191459597445, -0.1737423559701157, -0.17518356115312753, -0.17589439413055735, -0.17588646944497877, -0.17517405120020096, -0.17377394345044514, -0.17170537258420662, -0.16898986233252339, -0.16565110204844838, -0.16171480891867487, -0.1572085847794841, -0.15216176821749336, -0.14660528264109668, -0.14057148101105291, -0.13409398791842592, -0.12720753969508478, -0.11994782323628231, -0.11235131420653809, -0.10445511528922737, -0.096296795127030863, -0.087914228584813431, -0.079345438948697292, -0.070628442655187362, -0.061801097122304069, -0.052900952230938332, -0.043965105979150605, -0.035030064805074417, -0.026131609045568792, -0.017304663967931452, -0.0085831767810049826],\\n name='_line3',\\n mode='lines+markers',\\n marker=Marker(\\n symbol='square',\\n line=Line(\\n color='#000000',\\n width=0\\n ),\\n size=7,\\n color='#FF0000',\\n opacity=1\\n ),\\n line=Line(\\n dash='dashdot',\\n color='#FF0000',\\n width=1.75,\\n opacity=1\\n )\\n )\\n ]),\\n layout=Layout(\\n title='Damped oscillation',\\n xaxis=XAxis(\\n title='time',\\n domain=[0.0, 1.0],\\n range=(0.0, 2.0),\\n showline=True,\\n ticks='inside',\\n showgrid=True,\\n zeroline=False,\\n titlefont=Font(\\n size=11.0,\\n color='#000000'\\n ),\\n anchor='y',\\n mirror=True\\n ),\\n yaxis=YAxis(\\n title='volts',\\n domain=[0.0, 1.0],\\n range=(-1.0, 1.5),\\n showline=True,\\n ticks='inside',\\n showgrid=True,\\n zeroline=False,\\n titlefont=Font(\\n size=11.0,\\n color='#000000'\\n ),\\n anchor='x',\\n mirror=True\\n ),\\n width=480,\\n height=320,\\n autosize=False,\\n margin=Margin(\\n l=60,\\n r=47,\\n b=40,\\n t=31,\\n pad=0\\n ),\\n hovermode='closest',\\n titlefont=Font(\\n size=12.0,\\n color='#262626'\\n ),\\n showlegend=False,\\n annotations=Annotations([\\n \\n ])\\n )\\n)\""
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e6ba410>"
    }
    ],
    "prompt_number": 58
    "prompt_number": 23
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "You can also strip out the matplotlib styling, and use Plotly's default styling."
    "source": "Here's where this gets special. You can get the data from any Plotly graph. That means you can re-plot the graph or part of it, or use your favorite Python tools to wrangle and analyze your data. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig = tls.mpl_to_plotly(fig3)\nfig['layout'].update(showlegend=True)\nfig.strip_style()\npy.iplot(fig)",
    "input": "tls.mpl_to_plotly(fig4).get_data()",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3315\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e5f1210>"
    "output_type": "pyout",
    "prompt_number": 61,
    "text": "[{'name': '_line0',\n 'x': [0.0,\n 0.20000000000000001,\n 0.40000000000000002,\n 0.60000000000000009,\n 0.80000000000000004,\n 1.0,\n 1.2000000000000002,\n 1.4000000000000001,\n 1.6000000000000001,\n 1.8,\n 2.0,\n 2.2000000000000002,\n 2.4000000000000004,\n 2.6000000000000001,\n 2.8000000000000003,\n 3.0,\n 3.2000000000000002,\n 3.4000000000000004,\n 3.6000000000000001,\n 3.8000000000000003,\n 4.0,\n 4.2000000000000002,\n 4.4000000000000004,\n 4.6000000000000005,\n 4.8000000000000007],\n 'y': [1.0,\n 0.25300171651849518,\n -0.54230030891302927,\n -0.44399794031078654,\n 0.13885028597711233,\n 0.36787944117144233,\n 0.09307413008823949,\n -0.19950113459002566,\n -0.16333771416280363,\n 0.051080165611754998,\n 0.1353352832366127,\n 0.034240058964379601,\n -0.073392365906047419,\n -0.060088587008433003,\n 0.018791342780197139,\n 0.049787068367863944,\n 0.012596213757493282,\n -0.026999542555766767,\n -0.022105355809443925,\n 0.0069129486808399343,\n 0.018315638888734179,\n 0.0046338880779826647,\n -0.0099325766273000524,\n -0.0081321059420741033,\n 0.0025431316975542792]}]"
    }
    ],
    "prompt_number": 22
    "prompt_number": 61
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "First up, an example from [pylab](http://matplotlib.org/examples/pylab_examples/arctest.html)."
    "source": "Or you can get the string to produce the graph using Plotly."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig4 = plt.figure()\n\nfrom pylab import *\n\ndef f(t):\n 'a damped exponential'\n s1 = cos(2*pi*t)\n e1 = exp(-t)\n return multiply(s1,e1)\n\nt1 = arange(0.0, 5.0, .2)\n\n\nl = plot(t1, f(t1), 'ro')\nsetp(l, 'markersize', 30)\nsetp(l, 'markerfacecolor', 'b')\n\npy.iplot_mpl(fig4)",
    "input": "tls.mpl_to_plotly(fig4).to_string(pretty = False)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3316\" height=\"525\" width=\"100%\"></iframe>",
    "metadata": {},
    "output_type": "display_data",
    "text": "<IPython.core.display.HTML at 0x10e6ba410>"
    "output_type": "pyout",
    "prompt_number": 62,
    "text": "\"Figure(\\n data=Data([\\n Scatter(\\n x=[0.0, 0.20000000000000001, 0.40000000000000002, 0.60000000000000009, 0.80000000000000004, 1.0, 1.2000000000000002, 1.4000000000000001, 1.6000000000000001, 1.8, 2.0, 2.2000000000000002, 2.4000000000000004, 2.6000000000000001, 2.8000000000000003, 3.0, 3.2000000000000002, 3.4000000000000004, 3.6000000000000001, 3.8000000000000003, 4.0, 4.2000000000000002, 4.4000000000000004, 4.6000000000000005, 4.8000000000000007],\\n y=[1.0, 0.25300171651849518, -0.54230030891302927, -0.44399794031078654, 0.13885028597711233, 0.36787944117144233, 0.09307413008823949, -0.19950113459002566, -0.16333771416280363, 0.051080165611754998, 0.1353352832366127, 0.034240058964379601, -0.073392365906047419, -0.060088587008433003, 0.018791342780197139, 0.049787068367863944, 0.012596213757493282, -0.026999542555766767, -0.022105355809443925, 0.0069129486808399343, 0.018315638888734179, 0.0046338880779826647, -0.0099325766273000524, -0.0081321059420741033, 0.0025431316975542792],\\n name='_line0',\\n mode='markers',\\n marker=Marker(\\n symbol='dot',\\n line=Line(\\n color='#000000',\\n width=0\\n ),\\n size=30,\\n color='#0000FF',\\n opacity=1\\n )\\n )\\n ]),\\n layout=Layout(\\n xaxis=XAxis(\\n domain=[0.0, 1.0],\\n range=(0.0, 5.0),\\n showline=True,\\n ticks='inside',\\n showgrid=True,\\n zeroline=False,\\n anchor='y',\\n mirror=True\\n ),\\n yaxis=YAxis(\\n domain=[0.0, 1.0],\\n range=(-0.60000000000000009, 1.2),\\n showline=True,\\n ticks='inside',\\n showgrid=True,\\n zeroline=False,\\n anchor='x',\\n mirror=True\\n ),\\n width=480,\\n height=320,\\n autosize=False,\\n margin=Margin(\\n l=60,\\n r=47,\\n b=40,\\n t=31,\\n pad=0\\n ),\\n hovermode='closest',\\n showlegend=False\\n )\\n)\""
    }
    ],
    "prompt_number": 23
    "prompt_number": 62
    },
    {
    "cell_type": "markdown",
  13. msund revised this gist May 2, 2014. 1 changed file with 22 additions and 20 deletions.
    42 changes: 22 additions & 20 deletions Graphing
    22 additions, 20 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
  14. msund revised this gist May 2, 2014. 1 changed file with 192 additions and 248 deletions.
    440 changes: 192 additions & 248 deletions Graphing
    192 additions, 248 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
  15. msund revised this gist May 1, 2014. 1 changed file with 118 additions and 113 deletions.
    231 changes: 118 additions & 113 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -11,21 +11,25 @@
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "Sharing with Plotly: matplotlib gallery, prettyplotlib, seaborn, Software Carpentry, and Stack Overflow"
    "source": "20 Interactive Plots from matplotlib, prettyplotlib, Stack Overflow, and seaborn"
    },
    {
    "cell_type": "markdown",
    "cell_type": "code",
    "collapsed": false,
    "input": "%matplotlib inline\nimport matplotlib.pyplot as plt # side-stepping mpl backend\nimport matplotlib.gridspec as gridspec # subplots\nimport numpy as np",
    "language": "python",
    "metadata": {},
    "source": "Plotly's matplotlib support lets you make matplotlib plots into interactive, online, and collaborative projects. It's free, online, you own your data, and you control the privacy. It's like a GitHub for data and graphs. You can use the public key below or [sign up](https://plot.ly). That means you can use your libraries and code, then use Plotly to make your graphs interactive, shareable, and drawn with D3. Let's get started. "
    "outputs": [],
    "prompt_number": 16
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "%matplotlib inline\nimport matplotlib.pyplot as plt # side-stepping mpl backend\nimport matplotlib.gridspec as gridspec # subplots\nimport numpy as np",
    "input": "from matplotlylib import fig_to_plotly\nusername = \"IPython.Demo\"\napi_key = \"1fw3zw2o13\"",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 35
    "prompt_number": 17
    },
    {
    "cell_type": "code",
    @@ -37,20 +41,11 @@
    {
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 36,
    "prompt_number": 18,
    "text": "'0.5.9'"
    }
    ],
    "prompt_number": 36
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from matplotlylib import fig_to_plotly\nusername = \"IPython.Demo\"\napi_key = \"1fw3zw2o13\"",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 37
    "prompt_number": 18
    },
    {
    "cell_type": "heading",
    @@ -61,7 +56,7 @@
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "These first two are drawn from the excellent work the fine folks at Software Carpenty do. Check out [SWC repo](http://nbviewer.ipython.org/github/swcarpentry/notebooks/blob/master/matplotlib.ipynb) for more."
    "source": "These first two are drawn from the excellent work at Software Carpenty. Check out [SWC repo](http://nbviewer.ipython.org/github/swcarpentry/notebooks/blob/master/matplotlib.ipynb) for more."
    },
    {
    "cell_type": "code",
    @@ -71,14 +66,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3123/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3183/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 48,
    "text": "<IPython.core.display.HTML at 0x110c2f510>"
    "prompt_number": 19,
    "text": "<IPython.core.display.HTML at 0x10bb19b90>"
    }
    ],
    "prompt_number": 48
    "prompt_number": 19
    },
    {
    "cell_type": "code",
    @@ -87,7 +82,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 46
    "prompt_number": 20
    },
    {
    "cell_type": "code",
    @@ -97,19 +92,19 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3122/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3184/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 47,
    "text": "<IPython.core.display.HTML at 0x1102d9b90>"
    "prompt_number": 21,
    "text": "<IPython.core.display.HTML at 0x10bbdf7d0>"
    }
    ],
    "prompt_number": 47
    "prompt_number": 21
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "One special Plotly feature is that you'll get a URL for your call. The data always lives with the graph. To for that graph, the graph is here:\n\nhttps://plot.ly/~IPython.Demo/3080\n\nAnd I've gone in to make a copy of the graph, and shared the data here:\n\nhttps://plot.ly/~MattSundquist/1190"
    "source": "One special Plotly feature is that you'll get a URL for your call. The data always lives with the graph. The graph we just made is here:\n\nhttps://plot.ly/~IPython.Demo/3080\n\nAnd I've gone in to make a copy of the graph, and shared the data here:\n\nhttps://plot.ly/~MattSundquist/1190"
    },
    {
    "cell_type": "heading",
    @@ -135,14 +130,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3124/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3185/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 51,
    "text": "<IPython.core.display.HTML at 0x101ab1210>"
    "prompt_number": 22,
    "text": "<IPython.core.display.HTML at 0x10dbac990>"
    }
    ],
    "prompt_number": 51
    "prompt_number": 22
    },
    {
    "cell_type": "markdown",
    @@ -157,14 +152,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3125/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3186/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 52,
    "text": "<IPython.core.display.HTML at 0x110c70b10>"
    "prompt_number": 23,
    "text": "<IPython.core.display.HTML at 0x10db4b090>"
    }
    ],
    "prompt_number": 52
    "prompt_number": 23
    },
    {
    "cell_type": "markdown",
    @@ -179,14 +174,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3126/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3187/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 53,
    "text": "<IPython.core.display.HTML at 0x1117ad610>"
    "prompt_number": 24,
    "text": "<IPython.core.display.HTML at 0x10e69b810>"
    }
    ],
    "prompt_number": 53
    "prompt_number": 24
    },
    {
    "cell_type": "markdown",
    @@ -206,14 +201,14 @@
    "text": "mean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\n"
    },
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3127/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3188/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 54,
    "text": "<IPython.core.display.HTML at 0x1102cf910>"
    "prompt_number": 25,
    "text": "<IPython.core.display.HTML at 0x10e6cff90>"
    }
    ],
    "prompt_number": 54
    "prompt_number": 25
    },
    {
    "cell_type": "markdown",
    @@ -228,14 +223,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3128/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3189/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 55,
    "text": "<IPython.core.display.HTML at 0x10f55a490>"
    "prompt_number": 26,
    "text": "<IPython.core.display.HTML at 0x10e813ad0>"
    }
    ],
    "prompt_number": 55
    "prompt_number": 26
    },
    {
    "cell_type": "markdown",
    @@ -250,14 +245,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3129/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3190/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 56,
    "text": "<IPython.core.display.HTML at 0x112631b50>"
    "prompt_number": 27,
    "text": "<IPython.core.display.HTML at 0x10f511390>"
    }
    ],
    "prompt_number": 56
    "prompt_number": 27
    },
    {
    "cell_type": "heading",
    @@ -278,14 +273,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3130/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3191/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 57,
    "text": "<IPython.core.display.HTML at 0x112cef250>"
    "prompt_number": 28,
    "text": "<IPython.core.display.HTML at 0x10f5c83d0>"
    }
    ],
    "prompt_number": 57
    "prompt_number": 28
    },
    {
    "cell_type": "markdown",
    @@ -300,14 +295,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3131/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3192/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 58,
    "text": "<IPython.core.display.HTML at 0x113046190>"
    "prompt_number": 29,
    "text": "<IPython.core.display.HTML at 0x10bbe5450>"
    }
    ],
    "prompt_number": 58
    "prompt_number": 29
    },
    {
    "cell_type": "markdown",
    @@ -322,14 +317,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3132/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3193/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 59,
    "text": "<IPython.core.display.HTML at 0x112d1aa50>"
    "prompt_number": 30,
    "text": "<IPython.core.display.HTML at 0x10bddd4d0>"
    }
    ],
    "prompt_number": 59
    "prompt_number": 30
    },
    {
    "cell_type": "markdown",
    @@ -344,14 +339,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3133/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3194/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 60,
    "text": "<IPython.core.display.HTML at 0x112d72250>"
    "prompt_number": 31,
    "text": "<IPython.core.display.HTML at 0x10bddc190>"
    }
    ],
    "prompt_number": 60
    "prompt_number": 31
    },
    {
    "cell_type": "markdown",
    @@ -366,14 +361,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3134/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3195/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 61,
    "text": "<IPython.core.display.HTML at 0x113085210>"
    "prompt_number": 32,
    "text": "<IPython.core.display.HTML at 0x10bdf0b50>"
    }
    ],
    "prompt_number": 61
    "prompt_number": 32
    },
    {
    "cell_type": "heading",
    @@ -394,14 +389,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3135/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3196/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 62,
    "text": "<IPython.core.display.HTML at 0x112d21950>"
    "prompt_number": 33,
    "text": "<IPython.core.display.HTML at 0x10f5d1050>"
    }
    ],
    "prompt_number": 62
    "prompt_number": 33
    },
    {
    "cell_type": "markdown",
    @@ -416,14 +411,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3136/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3197/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 63,
    "text": "<IPython.core.display.HTML at 0x1136e4850>"
    "prompt_number": 34,
    "text": "<IPython.core.display.HTML at 0x10fd206d0>"
    }
    ],
    "prompt_number": 63
    "prompt_number": 34
    },
    {
    "cell_type": "heading",
    @@ -443,7 +438,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 64
    "prompt_number": 35
    },
    {
    "cell_type": "code",
    @@ -452,7 +447,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 65
    "prompt_number": 36
    },
    {
    "cell_type": "code",
    @@ -462,14 +457,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3137/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3198/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 66,
    "text": "<IPython.core.display.HTML at 0x112d1b790>"
    "prompt_number": 37,
    "text": "<IPython.core.display.HTML at 0x1115dd110>"
    }
    ],
    "prompt_number": 66
    "prompt_number": 37
    },
    {
    "cell_type": "markdown",
    @@ -484,14 +479,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3138/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3199/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 67,
    "text": "<IPython.core.display.HTML at 0x1137c7ed0>"
    "prompt_number": 38,
    "text": "<IPython.core.display.HTML at 0x110155150>"
    }
    ],
    "prompt_number": 67
    "prompt_number": 38
    },
    {
    "cell_type": "markdown",
    @@ -505,7 +500,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 68
    "prompt_number": 39
    },
    {
    "cell_type": "code",
    @@ -514,7 +509,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 69
    "prompt_number": 40
    },
    {
    "cell_type": "code",
    @@ -523,7 +518,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 70
    "prompt_number": 41
    },
    {
    "cell_type": "code",
    @@ -533,14 +528,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3139/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3200/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 71,
    "text": "<IPython.core.display.HTML at 0x1137a8150>"
    "prompt_number": 42,
    "text": "<IPython.core.display.HTML at 0x110175790>"
    }
    ],
    "prompt_number": 71
    "prompt_number": 42
    },
    {
    "cell_type": "markdown",
    @@ -554,7 +549,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 72
    "prompt_number": 43
    },
    {
    "cell_type": "markdown",
    @@ -568,7 +563,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 73
    "prompt_number": 44
    },
    {
    "cell_type": "code",
    @@ -577,7 +572,7 @@
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 74
    "prompt_number": 45
    },
    {
    "cell_type": "code",
    @@ -589,18 +584,23 @@
    {
    "metadata": {},
    "output_type": "display_data",
    "png": "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\n",
    "text": "<matplotlib.figure.Figure at 0x10dd9c510>"
    "png": "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\nD1okb9U42GWSAAAAAElFTkSuQmCC\n",
    "text": "<matplotlib.figure.Figure at 0x1102ea390>"
    },
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3140/600/450\" width=\"650\"></iframe>",
    "output_type": "stream",
    "stream": "stderr",
    "text": "/Users/matthewsundquist/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlylib/renderer.py:448: UserWarning: Dang! That path collection is out of this world. I totally don't know what to do with it yet! Plotly can only import path collections linked to 'data' coordinates\n warnings.warn(\"Dang! That path collection is out of this \"\n"
    },
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3201/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 75,
    "text": "<IPython.core.display.HTML at 0x10fe5acd0>"
    "prompt_number": 46,
    "text": "<IPython.core.display.HTML at 0x1102aa090>"
    }
    ],
    "prompt_number": 75
    "prompt_number": 46
    },
    {
    "cell_type": "markdown",
    @@ -615,14 +615,19 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3141/600/450\" width=\"650\"></iframe>",
    "output_type": "stream",
    "stream": "stderr",
    "text": "/Users/matthewsundquist/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlylib/renderer.py:363: UserWarning: Bummer! Plotly can currently only draw Line2D objects from matplotlib that are in 'data' coordinates!\n warnings.warn(\"Bummer! Plotly can currently only draw Line2D \"\n"
    },
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3202/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 76,
    "text": "<IPython.core.display.HTML at 0x1143242d0>"
    "prompt_number": 47,
    "text": "<IPython.core.display.HTML at 0x11038af90>"
    }
    ],
    "prompt_number": 76
    "prompt_number": 47
    },
    {
    "cell_type": "markdown",
    @@ -637,14 +642,14 @@
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3142/600/450\" width=\"650\"></iframe>",
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3203/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 77,
    "text": "<IPython.core.display.HTML at 0x114324210>"
    "prompt_number": 48,
    "text": "<IPython.core.display.HTML at 0x111f07050>"
    }
    ],
    "prompt_number": 77
    "prompt_number": 48
    }
    ],
    "metadata": {}
  16. msund revised this gist Apr 27, 2014. 1 changed file with 187 additions and 123 deletions.
    310 changes: 187 additions & 123 deletions Graphing
    187 additions, 123 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
  17. msund created this gist Apr 27, 2014.
    589 changes: 589 additions & 0 deletions Graphing
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,589 @@
    {
    "metadata": {
    "name": "Three new matplotlib plots"
    },
    "nbformat": 3,
    "nbformat_minor": 0,
    "worksheets": [
    {
    "cells": [
    {
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "Sharing with Plotly: matplotlib gallery, prettyplotlib, seaborn, Software Carpentry, and Stack Overflow"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly's matplotlib support lets you make matplotlib plots into interactive, online, and collaborative projects. It's free, online, you own your data, and you control the privacy. It's like a GitHub for data and graphs. You can use the public key below or [sign up](https://plot.ly). That means you can use your libraries and code, then use Plotly to make your graphs interactive, shareable, and drawn with D3. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "%matplotlib inline\nimport matplotlib.pyplot as plt # side-stepping mpl backend\nimport matplotlib.gridspec as gridspec # subplots\nimport numpy as np",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 10
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "import plotly\nplotly.__version__",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 11,
    "text": "'0.5.9'"
    }
    ],
    "prompt_number": 11
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "from matplotlylib import fig_to_plotly\nusername = \"IPython.Demo\"\napi_key = \"1fw3zw2o13\"",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 12
    },
    {
    "cell_type": "heading",
    "level": 2,
    "metadata": {},
    "source": "I. Plotly for Teaching: Software Carpentry Notebook"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "You can use Plotly, matplotlib, and IPython to interactive plots. These can be shared, forked, and easily edited as a learning process. These are drawn from the [SWC repo](http://nbviewer.ipython.org/github/swcarpentry/notebooks/blob/master/matplotlib.ipynb). We'll start off with a histogram. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig1 = plt.figure()\n\nx = np.array(range(20))\ny = 3 + 0.5 * x + np.random.randn(20)\nz = 2 + 0.9 * x + np.random.randn(20)\n\n#plot the data\nplt.plot(x, y, 'bo')\nplt.hold(True)\nplt.plot(x, z, 'r^')\n\nfig_to_plotly(fig1, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3080/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 13,
    "text": "<IPython.core.display.HTML at 0x10df10b90>"
    }
    ],
    "prompt_number": 13
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "We've left plot.show in so you can see both plots. For the rest, we won't show both. One special Plotly feature is that you'll get a URL for your call. Non-coders and coders can work together. You can also edit the data, fork it, and make new graphs. The data always lives with the code, so for that graph, the graph is here:\n\nand the data is here: \n\n. "
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Plotly also reads sup-plots. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig2 = plt.figure()\n\nplt.subplot(1, 2, 1)\nplt.plot(x, y, 'rs')\nplt.subplot(1, 2, 2)\nplt.hist(data, 10)\n\nfig_to_plotly(fig2, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3081/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 14,
    "text": "<IPython.core.display.HTML at 0x10e433950>"
    }
    ],
    "prompt_number": 14
    },
    {
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "II. matplotlib Gallery graphs"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "For matplotlib experts, you'll recognize these graphs from the [matplotlib gallery](matplotlib.org/gallery.html). Let us know if you find others you like or need translated. \n\nYou can also use Plotly's [APIs](https://plot.ly/api) for Python, MATLAB, R, Perl, Julia, and REST to write to graphs. That means you and I could edit the same graph with any language or the GUI. Then it goes to a profile, like this: https://plot.ly/~IPython.Demo."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig3 = plt.figure()\n\nfrom pylab import *\n\ndef f(t):\n 'a damped exponential'\n s1 = cos(2*pi*t)\n e1 = exp(-t)\n return multiply(s1,e1)\n\nt1 = arange(0.0, 5.0, .2)\n\n\nl = plot(t1, f(t1), 'ro')\nsetp(l, 'markersize', 30)\nsetp(l, 'markerfacecolor', 'b')\n\nfig_to_plotly(fig3, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3082/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 15,
    "text": "<IPython.core.display.HTML at 0x10e4242d0>"
    }
    ],
    "prompt_number": 15
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "You can also plot with Plotly with pandas, NumPy, datetime, and more of your favorite Python tools. We've already imported numpy and matplotlib; here we've kept them in so you can simply copy and paste these examples into your own NB. "
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig4 = plt.figure()\n\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# make a little extra space between the subplots\nplt.subplots_adjust(wspace=0.5)\n\ndt = 0.01\nt = np.arange(0, 30, dt)\nnse1 = np.random.randn(len(t)) # white noise 1\nnse2 = np.random.randn(len(t)) # white noise 2\nr = np.exp(-t/0.05)\n\ncnse1 = np.convolve(nse1, r, mode='same')*dt # colored noise 1\ncnse2 = np.convolve(nse2, r, mode='same')*dt # colored noise 2\n\n# two signals with a coherent part and a random part\ns1 = 0.01*np.sin(2*np.pi*10*t) + cnse1\ns2 = 0.01*np.sin(2*np.pi*10*t) + cnse2\n\nplt.subplot(211)\nplt.plot(t, s1, 'b-', t, s2, 'g-')\nplt.xlim(0,5)\nplt.xlabel('time')\nplt.ylabel('s1 and s2')\nplt.grid(True)\n\nplt.subplot(212)\ncxy, f = plt.csd(s1, s2, 256, 1./dt)\nplt.ylabel('CSD (db)')\n\nfig_to_plotly(fig4, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3083/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 16,
    "text": "<IPython.core.display.HTML at 0x10e5d6590>"
    }
    ],
    "prompt_number": 16
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Another subplotting example. Note if you double-click, Plotly auto-sizes the plot. We initially draw it based on matplotlib defaults, but you can change the zoom and then save and share it how you'd like."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig5 = plt.figure()\n\nfrom pylab import figure, show\nfrom numpy import arange, sin, pi\n\nt = arange(0.0, 1.0, 0.01)\n\nfig = figure(1)\n\nax1 = fig.add_subplot(211)\nax1.plot(t, sin(2*pi*t))\nax1.grid(True)\nax1.set_ylim( (-2,2) )\nax1.set_ylabel('1 Hz')\nax1.set_title('A sine wave or two')\n\nfor label in ax1.get_xticklabels():\n label.set_color('r')\n\n\nax2 = fig.add_subplot(212)\nax2.plot(t, sin(2*2*pi*t))\nax2.grid(True)\nax2.set_ylim( (-2,2) )\nl = ax2.set_xlabel('Hi mom')\nl.set_color('g')\nl.set_fontsize('large')\n\nfig_to_plotly(fig5, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3084/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 17,
    "text": "<IPython.core.display.HTML at 0x10dca3c10>"
    }
    ],
    "prompt_number": 17
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "A favorte from the gallery is [Anscombe's quartet](http://matplotlib.org/examples/pylab_examples/anscombe.html). You might also like Plotly's [blog post](blog.plot.ly/post/68951620673/why-graph-anscombes-quartet) on the subject."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig6 = plt.figure()\n\nfrom __future__ import print_function\n\"\"\"\nEdward Tufte uses this example from Anscombe to show 4 datasets of x\nand y that have the same mean, standard deviation, and regression\nline, but which are qualitatively different.\n\nmatplotlib fun for a rainy day\n\"\"\"\n\nfrom pylab import *\n\nx = array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])\ny1 = array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68])\ny2 = array([9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74])\ny3 = array([7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73])\nx4 = array([8,8,8,8,8,8,8,19,8,8,8])\ny4 = array([6.58,5.76,7.71,8.84,8.47,7.04,5.25,12.50,5.56,7.91,6.89])\n\ndef fit(x):\n return 3+0.5*x\n\n\n\nxfit = array( [amin(x), amax(x) ] )\n\nsubplot(221)\nplot(x,y1,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\nsetp(gca(), xticklabels=[], yticks=(4,8,12), xticks=(0,10,20))\ntext(3,12, 'I', fontsize=20)\n\nsubplot(222)\nplot(x,y2,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\nsetp(gca(), xticklabels=[], yticks=(4,8,12), yticklabels=[], xticks=(0,10,20))\ntext(3,12, 'II', fontsize=20)\n\nsubplot(223)\nplot(x,y3,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\ntext(3,12, 'III', fontsize=20)\nsetp(gca(), yticks=(4,8,12), xticks=(0,10,20))\n\nsubplot(224)\n\nxfit = array([amin(x4),amax(x4)])\nplot(x4,y4,'ks', xfit, fit(xfit), 'r-', lw=2)\naxis([2,20,2,14])\nsetp(gca(), yticklabels=[], yticks=(4,8,12), xticks=(0,10,20))\ntext(3,12, 'IV', fontsize=20)\n\n#verify the stats\npairs = (x,y1), (x,y2), (x,y3), (x4,y4)\nfor x,y in pairs:\n print ('mean=%1.2f, std=%1.2f, r=%1.2f'%(mean(y), std(y), corrcoef(x,y)[0][1]))\n\nfig_to_plotly(fig6, username, api_key, notebook= True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "output_type": "stream",
    "stream": "stdout",
    "text": "mean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\nmean=7.50, std=1.94, r=0.82\n"
    },
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3085/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 18,
    "text": "<IPython.core.display.HTML at 0x10f3b3810>"
    }
    ],
    "prompt_number": 18
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "[damped oscillation](http://matplotlib.org/examples/pylab_examples/legend_demo2.html)"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig7 = plt.figure()\n# Make a legend for specific lines.\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n\nt1 = np.arange(0.0, 2.0, 0.1)\nt2 = 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\nl1, = plt.plot(t2, np.exp(-t2))\nl2, l3 = plt.plot(t2, np.sin(2 * np.pi * t2), '--go', t1, np.log(1 + t1), '.')\nl4, = plt.plot(t2, np.exp(-t2) * np.sin(2 * np.pi * t2), 'rs-.')\n\nplt.legend( (l2, l4), ('oscillatory', 'damped'), 'upper right', shadow=True)\nplt.xlabel('time')\nplt.ylabel('volts')\nplt.title('Damped oscillation')\n\nfig_to_plotly(fig7, username, api_key, notebook= True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3086/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 19,
    "text": "<IPython.core.display.HTML at 0x10f3dc050>"
    }
    ],
    "prompt_number": 19
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "[histogram](http://matplotlib.org/examples/statistics/histogram_demo_features.html)"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig8 = plt.figure()\n\nimport numpy as np\nimport matplotlib.mlab as mlab\nimport matplotlib.pyplot as plt\n\n\n# example data\nmu = 100 # mean of distribution\nsigma = 15 # standard deviation of distribution\nx = mu + sigma * np.random.randn(10000)\n\nnum_bins = 50\n# the histogram of the data\nn, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)\n# add a 'best fit' line\ny = mlab.normpdf(bins, mu, sigma)\nplt.plot(bins, y, 'r--')\nplt.xlabel('Smarts')\nplt.ylabel('Probability')\nplt.title(r'Histogram of IQ: $\\mu=100$, $\\sigma=15$')\n\n# Tweak spacing to prevent clipping of ylabel\nplt.subplots_adjust(left=0.15)\n\nfig_to_plotly(fig8, username, api_key, notebook= True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3087/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 20,
    "text": "<IPython.core.display.HTML at 0x10fd3f0d0>"
    }
    ],
    "prompt_number": 20
    },
    {
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "III. Stack Overflow Answers"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "[histogram](http://stackoverflow.com/questions/5328556/histogram-matplotlib)"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig9 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nmu, sigma = 100, 15\nx = mu + sigma * np.random.randn(10000)\nhist, bins = np.histogram(x, bins=50)\nwidth = 0.7 * (bins[1] - bins[0])\ncenter = (bins[:-1] + bins[1:]) / 2\nplt.bar(center, hist, align='center', width=width)\n\nfig_to_plotly(fig9, username, api_key, notebook= True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3088/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 21,
    "text": "<IPython.core.display.HTML at 0x10feeb310>"
    }
    ],
    "prompt_number": 21
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "[Density plot](http://stackoverflow.com/questions/4150171/how-to-create-a-density-plot-in-matplotlib/4152016#4152016)"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig10 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom scipy.stats import gaussian_kde\ndata = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8\ndensity = gaussian_kde(data)\nxs = np.linspace(0,8,200)\ndensity.covariance_factor = lambda : .25\ndensity._compute_covariance()\nplt.plot(xs,density(xs))\n\nfig_to_plotly(fig10, username, api_key, notebook= True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3089/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 22,
    "text": "<IPython.core.display.HTML at 0x10e43f110>"
    }
    ],
    "prompt_number": 22
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "[different lines for different plots](http://stackoverflow.com/questions/4805048/how-to-get-different-lines-for-different-plots-in-a-single-figure/4805456#4805456)"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig11 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nx = np.arange(10)\n\nplt.plot(x, x)\nplt.plot(x, 2 * x)\nplt.plot(x, 3 * x)\nplt.plot(x, 4 * x)\n\nfig_to_plotly(fig11, username, api_key, notebook= True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3090/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 23,
    "text": "<IPython.core.display.HTML at 0x10e496d10>"
    }
    ],
    "prompt_number": 23
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig12 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nnum_plots = 20\n\n# Have a look at the colormaps here and decide which one you'd like:\n# http://matplotlib.org/1.2.1/examples/pylab_examples/show_colormaps.html\ncolormap = plt.cm.gist_ncar\nplt.gca().set_color_cycle([colormap(i) for i in np.linspace(0, 0.9, num_plots)])\n\n# Plot several different functions...\nx = np.arange(10)\nlabels = []\nfor i in range(1, num_plots + 1):\n plt.plot(x, i * x + 5 * i)\n labels.append(r'$y = %ix + %i$' % (i, 5*i))\n\nfig_to_plotly(fig12, username, api_key, notebook= True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3091/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 24,
    "text": "<IPython.core.display.HTML at 0x10ff04710>"
    }
    ],
    "prompt_number": 24
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "[variables as subscripts in math mode](http://stackoverflow.com/questions/23276918/writing-variables-as-subscripts-in-math-mode)"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig13 = plt.figure()\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport matplotlib.mlab as mlab\n\nmean = [10,12,16,22,25]\nvariance = [3,6,8,10,12]\n\nx = np.linspace(0,40,1000)\n\nfor i in range(4):\n sigma = np.sqrt(variance[i])\n y = mlab.normpdf(x,mean[i],sigma)\n plt.plot(x,y, label=r'$v_{}$'.format(i+1))\n\nplt.xlabel(\"X\")\nplt.ylabel(\"P(X)\") \n\nplt.legend()\n\nfig_to_plotly(fig13, username, api_key, notebook= True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3092/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 25,
    "text": "<IPython.core.display.HTML at 0x10ff17e10>"
    }
    ],
    "prompt_number": 25
    },
    {
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "IV. Prettyplotlib graphs in Plotly"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Some lovely [examples](http://nbviewer.ipython.org/github/olgabot/prettyplotlib/blob/master/ipython_notebooks/Examples%20of%20everything%20pretty%20and%20plotted!.ipynb?create=1) from [prettyplotlib](https://github.com/olgabot/prettyplotlib)"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig14 = plt.figure()\n\nimport prettyplotlib as ppl\n\n# Set the random seed for consistency\nnp.random.seed(12)\n\n# Show the whole color range\nfor i in range(8):\n x = np.random.normal(loc=i, size=1000)\n y = np.random.normal(loc=i, size=1000)\n ax = ppl.scatter(x, y, label=str(i))\n \nppl.legend(ax)\nax.set_title('prettyplotlib `scatter`')\n\nfig_to_plotly(fig14, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3093/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 26,
    "text": "<IPython.core.display.HTML at 0x10e49f310>"
    }
    ],
    "prompt_number": 26
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig15 = plt.figure()\n\nimport prettyplotlib as ppl\n\n# Set the random seed for consistency\nnp.random.seed(12)\n\n# Show the whole color range\nfor i in range(8):\n y = np.random.normal(size=1000).cumsum()\n x = np.arange(1000)\n\n # For now, you need to specify both x and y :(\n # Still figuring out how to specify just one\n ppl.plot(x, y, label=str(i), linewidth=0.75)\n \nppl.legend()\n\nfig_to_plotly(fig15, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3094/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 27,
    "text": "<IPython.core.display.HTML at 0x110ab2b10>"
    }
    ],
    "prompt_number": 27
    },
    {
    "cell_type": "heading",
    "level": 1,
    "metadata": {},
    "source": "V. Plotting with seaborn"
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "You may need to [import six](http://stackoverflow.com/questions/13967428/importerror-no-module-named-six), which you can do from pip."
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "import seaborn as sns\nfrom matplotlylib import fig_to_plotly",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 28
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "def sinplot(flip=1):\n x = np.linspace(0, 14, 100)\n for i in range(1, 7):\n plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 29
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig = plt.figure()\n\nsns.set_style(\"dark\")\nsinplot()\n\nfig_to_plotly(fig, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3095/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 30,
    "text": "<IPython.core.display.HTML at 0x10f5736d0>"
    }
    ],
    "prompt_number": 30
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig16 = plt.figure()\n\nwith sns.axes_style(\"darkgrid\"):\n plt.subplot(211)\n sinplot()\nplt.subplot(212)\nsinplot(-1)\n\nfig_to_plotly(fig16, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3096/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 31,
    "text": "<IPython.core.display.HTML at 0x10f5765d0>"
    }
    ],
    "prompt_number": 31
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "Finally, it\u2019s also possibly to plot each individual observation with a point, rather than joining them. This is more useful for the gestalt it presents than as a quantitative visualization but you may prefer it. [Visualizing the data for each sampling unit](http://stanford.edu/~mwaskom/software/seaborn/tutorial/timeseries_plots.html#specifying-input-data-with-multidimensional-arrays)"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "import numpy as np\nnp.random.seed(9221999)\nimport pandas as pd\nfrom scipy import stats, optimize\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nsns.set(palette=\"Set2\")",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 32
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "def sine_wave(n_x, obs_err_sd=1.5, tp_err_sd=.3):\n x = np.linspace(0, (n_x - 1) / 2, n_x)\n y = np.sin(x) + np.random.normal(0, obs_err_sd) + np.random.normal(0, tp_err_sd, n_x)\n return y",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 33
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "sines = np.array([sine_wave(31) for _ in range(20)])",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 34
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig17 = plt.figure()\n\nsns.tsplot(sines, err_style=\"unit_points\", color=\"mediumpurple\");\n\nfig_to_plotly(fig17, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3097/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 35,
    "text": "<IPython.core.display.HTML at 0x110e59bd0>"
    }
    ],
    "prompt_number": 35
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": "[plotting regressions](http://stanford.edu/~mwaskom/software/seaborn/tutorial/quantitative_linear_models.html#plotting-simple-regression-with-regplot)"
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "import numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib as mpl\nimport matplotlib.pyplot as plt",
    "language": "python",
    "metadata": {},
    "outputs": [],
    "prompt_number": 36
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig18 = plt.figure()\n\nx, y = np.random.multivariate_normal([1, 5], [(2, -.8), (-.8, 2)], 80).T\nax = sns.regplot(x, y, color=\"seagreen\")\nax.set(xlabel=\"x variable\", ylabel=\"y variable\");\nplt.show()\n\nfig_to_plotly(fig18, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "metadata": {},
    "output_type": "display_data",
    "png": "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\nZbwAAAAASUVORK5CYII=\n",
    "text": "<matplotlib.figure.Figure at 0x110eada10>"
    },
    {
    "output_type": "stream",
    "stream": "stderr",
    "text": "/Users/matthewsundquist/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlylib/renderer.py:448: UserWarning: Dang! That path collection is out of this world. I totally don't know what to do with it yet! Plotly can only import path collections linked to 'data' coordinates\n warnings.warn(\"Dang! That path collection is out of this \"\n"
    },
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3098/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 37,
    "text": "<IPython.core.display.HTML at 0x110ea6c90>"
    }
    ],
    "prompt_number": 37
    },
    {
    "cell_type": "code",
    "collapsed": false,
    "input": "fig19 = plt.figure()\n\nsns.residplot(x, y);\n\nfig_to_plotly(fig19, username, api_key, notebook = True)",
    "language": "python",
    "metadata": {},
    "outputs": [
    {
    "output_type": "stream",
    "stream": "stderr",
    "text": "/Users/matthewsundquist/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlylib/renderer.py:363: UserWarning: Bummer! Plotly can currently only draw Line2D objects from matplotlib that are in 'data' coordinates!\n warnings.warn(\"Bummer! Plotly can currently only draw Line2D \"\n"
    },
    {
    "html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/3099/600/450\" width=\"650\"></iframe>",
    "metadata": {},
    "output_type": "pyout",
    "prompt_number": 38,
    "text": "<IPython.core.display.HTML at 0x111a90650>"
    }
    ],
    "prompt_number": 38
    }
    ],
    "metadata": {}
    }
    ]
    }