Last active
August 29, 2015 13:58
9 matplotlib figures in Plotly
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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