Skip to content

Instantly share code, notes, and snippets.

@msund
Last active August 29, 2015 13:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save msund/10016970 to your computer and use it in GitHub Desktop.
Save msund/10016970 to your computer and use it in GitHub Desktop.
9 matplotlib figures in Plotly
{
"metadata": {
"name": "mpl double examples"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": "Nine matplotlib figures made in Plotly "
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The [Plotly Python API](https://plot.ly/api/python) allows you to use familiar matplotlib syntax and make shareable, interactive, web-based Plotly graphs. All you do is add fig_to_plotly. You can install [matplotlylib](https://pypi.python.org/pypi/matplotlylib/0.1.0) to get started plotting with imports, lines plots, subplots, annotations, bar charts, and scatters. Matplotlylib was inspired by and is part of the [mpld3 project](https://github.com/mpld3), headed by [Jake Vanderplas](https://github.com/jakevdp).\n\nBelow are examples adapted from the matplotlib gallery and some of our favorite IPython NBs from the [IPython gallery of interesting Notebooks](https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks). Check out the NBs for the original graphs and the full context. If you have feedback, questions, or suggestions, let us know at feedback@plot.ly or [@plotlygraphs](https://twitter.com/plotlygraphs). Happy plotting!"
},
{
"cell_type": "code",
"collapsed": false,
"input": "%pylab inline\nimport matplotlib.pyplot as plt # side-stepping mpl backend\nimport matplotlib.gridspec as gridspec # subplots\nimport numpy as np",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Populating the interactive namespace from numpy and matplotlib\n"
}
],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can use this key and username to run these examples. [Sign up](https://plot.ly) for an account. It's free, online, and you own your data. Public sharing is free. It's like GitHub, but for graphs and data."
},
{
"cell_type": "code",
"collapsed": false,
"input": "from matplotlylib import fig_to_plotly \nusername = 'IPython.Demo'\napi_key = '1fw3zw2o13'",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": "I. matplotlib gallery graphs in Plotly"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We'll start with a few a examples from the matplotlib gallery. [First up](http://matplotlib.org/examples/subplots_axes_and_figures/subplot_demo.html) is a subplots example. The figure is re-drawn as an interactive graph in Plotly. You can click through to the \"data and graph\" link, and edit the graph with others from the GUI. Since we also have MATLAB and R APIs, that means you can plot with others in your languages of choice, or from the GUI, and edit the same graph. \n\nYou can also share your data and graphs and edit it with others, export your data and graph, and embed it in an iframe. You control whether it's private or public. "
},
{
"cell_type": "code",
"collapsed": false,
"input": "fig1 = plt.figure()\n\nx1 = np.linspace(0.0, 5.0)\nx2 = np.linspace(0.0, 2.0)\n\ny1 = np.cos(2 * np.pi * x1) * np.exp(-x1)\ny2 = np.cos(2 * np.pi * x2)\n\nplt.subplot(2, 1, 1)\nplt.plot(x1, y1, 'yo-')\nplt.title('A tale of 2 subplots')\nplt.ylabel('Damped oscillation')\n\nplt.subplot(2, 1, 2)\nplt.plot(x2, y2, 'r.-')\nplt.xlabel('time (s)')\nplt.ylabel('Undamped')\n\nplt.show()\n\nfig_to_plotly(fig1, username, api_key, notebook= True)",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": "<matplotlib.figure.Figure at 0x10bb23c90>"
},
{
"html": "<iframe height=\"500\" id=\"igraph\" scrolling=\"no\" seamless=\"seamless\" src=\"https://plot.ly/~IPython.Demo/2564/600/450\" width=\"650\"></iframe>",
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": "<IPython.core.display.HTML at 0x10bb6a390>"
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You'll notice there are a few slight differences, like ticks and spacing. We're continuing to work on the exporter, so please let us know or open an issue on [our GitHub repo](https://github.com/mpld3/matplotlylib) if you find something you'd like changed. You can edit, save, and share your plots with code or from the GUI.\n\nNext up we'll draw [this scatter plot](http://matplotlib.org/examples/shapes_and_collections/scatter_demo.html). To keep the NB shorter, we won't show the mpl figure with each call."
},
{
"cell_type": "code",
"collapsed": false,
"input": "fig2 = plt.figure()\n\nN = 50\nx = np.random.rand(N)\ny = np.random.rand(N)\narea = np.pi * (15 * np.random.rand(N))**2 # 0 to 15 point radiuses\n\nplt.scatter(x, y, s=area, alpha=0.5)\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/2565/600/450\" width=\"650\"></iframe>",
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": "<IPython.core.display.HTML at 0x10bb78810>"
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Next up, a [plot](http://matplotlib.org/examples/text_labels_and_annotations/text_demo_fontdict.html) with a few annotations and text labels showing how LaTeX looks in Plotly."
},
{
"cell_type": "code",
"collapsed": false,
"input": "fig3 = plt.figure()\n\nfont = {'family' : 'serif',\n 'color' : 'darkred',\n 'weight' : 'normal',\n 'size' : 16,\n }\n\nx = np.linspace(0.0, 5.0, 100)\ny = np.cos(2 * np.pi * x) * np.exp(-x)\n\nplt.plot(x, y, 'k')\nplt.title('Damped exponential decay', fontdict=font)\nplt.text(2, 0.65, r'$\\cos(2 \\pi t) \\exp(-t)$', fontdict=font)\nplt.xlabel('time (s)', fontdict=font)\nplt.ylabel('voltage (mV)', fontdict=font)\n\n# Tweak spacing to prevent clipping of ylabel\nplt.subplots_adjust(left=0.15)\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/2566/600/450\" width=\"650\"></iframe>",
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": "<IPython.core.display.HTML at 0x10c229e90>"
}
],
"prompt_number": 5
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": "II. matplotlib tutorial "
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This lovely figure come from a tutorial on \"[matplotlib - 2D and 3D plotting in Python](http://nbviewer.ipython.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-4-Matplotlib.ipynb)\" by [J.R. Johansson](https://github.com/jrjohansson). Note that you can set the trace and marker styling."
},
{
"cell_type": "code",
"collapsed": false,
"input": "x = linspace(0, 5, 10)\ny = x ** 2",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": "fig4 = plt.figure()\n\nsubplot(1,2,1)\nplot(x, y, 'r--')\nsubplot(1,2,2)\nplot(y, x, 'g*-');\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/2567/600/450\" width=\"650\"></iframe>",
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": "<IPython.core.display.HTML at 0x10c387ad0>"
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Plotly also lets you draw subplots, and make figures with multiple axes (though you'll want to use our native syntax for that)."
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": "III. Crash Coure in Python for Scientists "
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Full credit for the delightful plots that follow goes to [Rick Muller](http://www.cs.sandia.gov/~rmuller/) and comes from his [Crash course in Python](http://nbviewer.ipython.org/gist/rpmuller/5920182). For fun, if you run your mouse over this first one, you'll notice the hover text changes color. You can also click and drag over a section of the grid to zoom in. Love it."
},
{
"cell_type": "code",
"collapsed": false,
"input": "fig5 = plt.figure()\n\nnpts = 5000\nxs = 2*rand(npts)-1\nys = 2*rand(npts)-1\nr = xs**2+ys**2\nninside = (r<1).sum()\nfigsize(6,6) # make the figure square\ntitle(\"Approximation to pi = %f\" % (4*ninside/float(npts)))\nplot(xs[r<1],ys[r<1],'b.')\nplot(xs[r>1],ys[r>1],'r.')\nfigsize(8,6) # change the figsize back to 4x3 for the rest of the notebook\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/2568/600/450\" width=\"650\"></iframe>",
"metadata": {},
"output_type": "pyout",
"prompt_number": 9,
"text": "<IPython.core.display.HTML at 0x10c20c050>"
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": "And another plot from the Crash Course shows a slick a stacked subplot."
},
{
"cell_type": "code",
"collapsed": false,
"input": "fig6 = plt.figure()\n\nfrom scipy.fftpack import fft,fftfreq\n\nnpts = 4000\nnplot = npts/10\nt = linspace(0,120,npts)\ndef acc(t): return 10*sin(2*pi*2.0*t) + 5*sin(2*pi*8.0*t) + 2*rand(npts)\n\nsignal = acc(t)\nFFT = abs(fft(signal))\nfreqs = fftfreq(npts, t[1]-t[0])\n\nsubplot(211)\nplot(t[:nplot], signal[:nplot])\nsubplot(212)\nplot(freqs,20*log10(FFT),',')\n\nfig_to_plotly(fig6, 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/2569/600/450\" width=\"650\"></iframe>",
"metadata": {},
"output_type": "pyout",
"prompt_number": 10,
"text": "<IPython.core.display.HTML at 0x10ce49f50>"
}
],
"prompt_number": 10
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": "IV. Plotting for Computational Methods Classes"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This plot come from a NB on the \"First few lectures of the UW/Coursera course on Data Analysis\", by [Chris Fonnesbeck](https://github.com/fonnesbeck). Chris has also done a cool NB on [Titanic passengers, coal mining disasters, and vessel speed changes](http://nbviewer.ipython.org/gist/fonnesbeck/8495259). \n\nSince Plotly is free and online, we hope it could be useful for professors and students crafting plots, learning, and sharing their work. If you have ideas or would like to collaborate, please let us know!"
},
{
"cell_type": "code",
"collapsed": false,
"input": "import scipy as sp\nfrom numpy.fft import *",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": "L = 20\nn = 128\nx = linspace(-L/2., L/2., n, endpoint=False)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": "fig7 = plt.figure()\n\nu = exp(-x**2)\nplot(x,u)\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/2570/600/450\" width=\"650\"></iframe>",
"metadata": {},
"output_type": "pyout",
"prompt_number": 13,
"text": "<IPython.core.display.HTML at 0x10ce58090>"
}
],
"prompt_number": 13
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": "V. Visualizing complex-valued functions "
},
{
"cell_type": "markdown",
"metadata": {},
"source": "These next two figures come from a [beautiful NB](http://nbviewer.ipython.org/github/empet/Math/blob/master/DomainColoring.ipynb) that walks through how to use matplotlib and Mayavi to visualize complex-valued functions. "
},
{
"cell_type": "code",
"collapsed": false,
"input": "from matplotlib.colors import hsv_to_rgb\nrcdef = plt.rcParams.copy()",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": "def g(x):\n return (1.0-1/(1+x**2))**0.2",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": "fig8 = plt.figure()\n\nplt.rcParams.update(rcdef)# reset plt.rcParams to default\nx=np.linspace(0,10, 1000)\ny=g(x)\nf=lambda z: (1.0-1.0/(1+z**2))**0.5\nh=lambda z: (1.0-1.0/(1+z**2))**0.4\nplt.plot(x,y)\nplt.plot(x, f(x), 'r')\nplt.plot(x, h(x), 'g')\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/2571/600/450\" width=\"650\"></iframe>",
"metadata": {},
"output_type": "pyout",
"prompt_number": 16,
"text": "<IPython.core.display.HTML at 0x10cbb7250>"
}
],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": "fig9 = plt.figure()\n\nX=np.linspace(0,8,800)\nY=X-np.floor(X)\nplt.rcParams['figure.figsize'] = 5, 3 \nplt.title('The graph of fract(x)')\nplt.plot(X,Y,'r')\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/2572/600/450\" width=\"650\"></iframe>",
"metadata": {},
"output_type": "pyout",
"prompt_number": 18,
"text": "<IPython.core.display.HTML at 0x10c896a50>"
}
],
"prompt_number": 18
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment