handson-ml/tools_matplotlib.ipynb

2590 lines
1.1 MiB
Plaintext
Raw Normal View History

2016-02-16 21:40:20 +01:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"**Tools - matplotlib**\n",
2016-02-16 21:40:20 +01:00
"\n",
"*This notebook demonstrates how to use the matplotlib library to plot beautiful graphs.*"
2016-02-16 21:40:20 +01:00
]
},
2016-03-03 18:29:41 +01:00
{
"cell_type": "markdown",
"metadata": {
"toc": "true"
},
"source": [
"# Table of Contents\n",
" <p><div class=\"lev1\"><a href=\"#Plotting-your-first-graph-1\"><span class=\"toc-item-num\">1&nbsp;&nbsp;</span>Plotting your first graph</a></div><div class=\"lev1\"><a href=\"#Line-style-and-color-2\"><span class=\"toc-item-num\">2&nbsp;&nbsp;</span>Line style and color</a></div><div class=\"lev1\"><a href=\"#Saving-a-figure-3\"><span class=\"toc-item-num\">3&nbsp;&nbsp;</span>Saving a figure</a></div><div class=\"lev1\"><a href=\"#Subplots-4\"><span class=\"toc-item-num\">4&nbsp;&nbsp;</span>Subplots</a></div><div class=\"lev1\"><a href=\"#Multiple-figures-5\"><span class=\"toc-item-num\">5&nbsp;&nbsp;</span>Multiple figures</a></div><div class=\"lev1\"><a href=\"#Pyplot's-state-machine:-implicit-vs-explicit-6\"><span class=\"toc-item-num\">6&nbsp;&nbsp;</span>Pyplot's state machine: implicit <em>vs</em> explicit</a></div><div class=\"lev1\"><a href=\"#Pylab-vs-Pyplot-vs-Matplotlib-7\"><span class=\"toc-item-num\">7&nbsp;&nbsp;</span>Pylab <em>vs</em> Pyplot <em>vs</em> Matplotlib</a></div><div class=\"lev1\"><a href=\"#Drawing-text-8\"><span class=\"toc-item-num\">8&nbsp;&nbsp;</span>Drawing text</a></div><div class=\"lev1\"><a href=\"#Legends-9\"><span class=\"toc-item-num\">9&nbsp;&nbsp;</span>Legends</a></div><div class=\"lev1\"><a href=\"#Non-linear-scales-10\"><span class=\"toc-item-num\">10&nbsp;&nbsp;</span>Non linear scales</a></div><div class=\"lev1\"><a href=\"#Ticks-and-tickers-11\"><span class=\"toc-item-num\">11&nbsp;&nbsp;</span>Ticks and tickers</a></div><div class=\"lev1\"><a href=\"#Polar-projection-12\"><span class=\"toc-item-num\">12&nbsp;&nbsp;</span>Polar projection</a></div><div class=\"lev1\"><a href=\"#3D-projection-13\"><span class=\"toc-item-num\">13&nbsp;&nbsp;</span>3D projection</a></div><div class=\"lev1\"><a href=\"#Scatter-plot-14\"><span class=\"toc-item-num\">14&nbsp;&nbsp;</span>Scatter plot</a></div><div class=\"lev1\"><a href=\"#Lines-15\"><span class=\"toc-item-num\">15&nbsp;&nbsp;</span>Lines</a></div><div class=\"lev1\"><a href=\"#Histograms-16\"><span class=\"toc-item-num\">16&nbsp;&nbsp;</span>Histograms</a></div><div class=\"lev1\"><a href=\"#Images-17\"><span class=\"toc-item-num\">17&nbsp;&nbsp;</span>Images</a></div><div class=\"lev1\"><a href=\"#Animations-18\"><span class=\"toc-item-num\">18&nbsp;&nbsp;</span>Animations</a></div><div class=\"lev1\"><a href=\"#Saving-animations-to-video-files-19\"><span class=\"toc-item-num\">19&nbsp;&nbsp;</span>Saving animations to video files</a></div><div class=\"lev1\"><a href=\"#What-next?-20\"><span class=\"toc-item-num\">20&nbsp;&nbsp;</span>What next?</a></div>"
]
},
2016-02-16 21:40:20 +01:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Plotting your first graph"
2016-02-16 21:40:20 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First let's make sure that this notebook works well in both python 2 and 3:"
2016-02-16 21:40:20 +01:00
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
2016-03-03 18:29:41 +01:00
"from __future__ import division, print_function, unicode_literals",
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First we need to import the `matplotlib` library."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
2016-02-16 21:40:20 +01:00
"source": [
"import matplotlib"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Matplotlib can output graphs using various backend graphics libraries, such as Tk, wxPython, etc. When running python using the command line, the graphs are typically shown in a separate window. In a Jupyter notebook, we can simply output the graphs within the notebook itself by running the `%matplotlib inline` magic command."
]
},
{
"cell_type": "code",
"execution_count": 3,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"# matplotlib.use(\"TKAgg\") # use this instead in your program if you want to use Tk as your graphics backend."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's plot our first graph! :)"
]
},
{
"cell_type": "code",
"execution_count": 4,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\np2CxOTSilsw7ehQuvDA
"text/plain": [
"<matplotlib.figure.Figure at 0x112255f10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"import matplotlib.pyplot as plt\n",
"plt.plot([1, 2, 4, 9, 5, 3])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Yep, it's as simple as calling the `plot` function with some data, and then calling the `show` function!\n",
"\n",
"If the `plot` function is given one array of data, it will use it as the coordinates on the vertical axis, and it will just use each data point's index in the array as the horizontal coordinate.\n",
"You can also provide two arrays: one for the horizontal axis `x`, and the second for the vertical axis `y`:"
]
},
{
"cell_type": "code",
"execution_count": 5,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": true
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nQfr0p0Noz52bzw2ZuQ7
"text/plain": [
"<matplotlib.figure.Figure at 0x11233f690>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.plot([-3, -2, 5, 0], [1, 6, 4, 3])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The axes automatically match the extent of the data. We would like to give the graph a bit more room, so let's call the `axis` function to change the extent of each axis `[xmin, xmax, ymin, ymax]`."
]
},
{
"cell_type": "code",
"execution_count": 6,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nistd+tvf0oOS1Wq4l2T
"text/plain": [
"<matplotlib.figure.Figure at 0x112421a10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.plot([-3, -2, 5, 0], [1, 6, 4, 3])\n",
"plt.axis([-4, 6, 0, 7])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, let's plot a mathematical function. We use NumPy's `linspace` function to create an array `x` containing 500 floats ranging from -2 to 2, then we create a second array `y` computed as the square of `x` (to learn about NumPy, read the [NumPy tutorial](tools_numpy.ipynb))."
2016-02-16 21:40:20 +01:00
]
},
{
"cell_type": "code",
"execution_count": 7,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\na/y8+HffhTZtwsSglnw
"text/plain": [
"<matplotlib.figure.Figure at 0x1124dfbd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"import numpy as np\n",
"x = np.linspace(-2, 2, 500)\n",
2016-02-16 21:40:20 +01:00
"y = x**2\n",
"\n",
"plt.plot(x, y)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's a bit dry, let's add a title, and x and y labels, and draw a grid."
]
},
{
"cell_type": "code",
"execution_count": 8,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nW/vvtyamNIqKXK07eHD
"text/plain": [
"<matplotlib.figure.Figure at 0x1125ecb90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.plot(x, y)\n",
"plt.title(\"Square function\")\n",
"plt.xlabel(\"x\")\n",
"plt.ylabel(\"y = x**2\")\n",
"plt.grid(True)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Line style and color"
2016-02-16 21:40:20 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By default, matplotlib draws a line between consecutive points."
]
},
{
"cell_type": "code",
"execution_count": 9,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\n5K+4ey8w3t37K/d5ERj
"text/plain": [
"<matplotlib.figure.Figure at 0x11277b790>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.plot([0, 100, 100, 0, 0, 100, 50, 0, 100], [0, 0, 100, 100, 0, 100, 130, 100, 0])\n",
"plt.axis([-10, 110, -10, 140])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can pass a 3rd argument to change the line's style and color.\n",
"For example `\"g--\"` means \"green dashed line\"."
]
},
{
"cell_type": "code",
"execution_count": 10,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\n6dza+lZbI26MOYWqsv6
"text/plain": [
"<matplotlib.figure.Figure at 0x1128dbe10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.plot([0, 100, 100, 0, 0, 100, 50, 0, 100], [0, 0, 100, 100, 0, 100, 130, 100, 0], \"g--\")\n",
"plt.axis([-10, 110, -10, 140])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can plot multiple lines on one graph very simply: just pass `x1, y1, [style1], x2, y2, [style2], ...`\n",
"\n",
"For example:"
]
},
{
"cell_type": "code",
"execution_count": 11,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nnOebWS6Ame10zp0fOt4
"text/plain": [
"<matplotlib.figure.Figure at 0x112897d90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.plot([0, 100, 100, 0, 0], [0, 0, 100, 100, 0], \"r-\", [0, 100, 50, 0, 100], [0, 100, 130, 100, 0], \"g--\")\n",
"plt.axis([-10, 110, -10, 140])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or simply call `plot` multiple times before calling `show`."
]
},
{
"cell_type": "code",
"execution_count": 12,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nnOebWS6Ame10zp0fOt4
"text/plain": [
"<matplotlib.figure.Figure at 0x11254bdd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.plot([0, 100, 100, 0, 0], [0, 0, 100, 100, 0], \"r-\")\n",
"plt.plot([0, 100, 50, 0, 100], [0, 100, 130, 100, 0], \"g--\")\n",
"plt.axis([-10, 110, -10, 140])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also draw simple points instead of lines. Here's an example with green dashes, red dotted line and blue triangles.\n",
"Check out [the documentation](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot) for the full list of style & color options."
]
},
{
"cell_type": "code",
"execution_count": 13,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\ntHDNQn7z9m+yX4Ju1Sp
"text/plain": [
"<matplotlib.figure.Figure at 0x1124e98d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(-1.4, 1.4, 30)\n",
2016-02-16 21:40:20 +01:00
"plt.plot(x, x, 'g--', x, x**2, 'r:', x, x**3, 'b^')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The plot function returns a list of `Line2D` objects (one for each line). You can set extra attributes on these lines, such as the line width, the dash style or the alpha level. See the full list of attributes in [the documentation](http://matplotlib.org/users/pyplot_tutorial.html#controlling-line-properties)."
]
},
{
"cell_type": "code",
"execution_count": 14,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": true
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\neEp7OXSANy97k9LDSgF
"text/plain": [
"<matplotlib.figure.Figure at 0x112751510>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(-1.4, 1.4, 30)\n",
2016-02-16 21:40:20 +01:00
"line1, line2, line3 = plt.plot(x, x, 'g--', x, x**2, 'r:', x, x**3, 'b^')\n",
"line1.set_linewidth(3.0)\n",
"line1.set_dash_capstyle(\"round\")\n",
"line3.set_alpha(0.2)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Saving a figure\n",
2016-02-16 21:40:20 +01:00
"Saving a figure to disk is as simple as calling [`savefig`](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefig) with the name of the file (or a file object). The available image formats depend on the graphics backend you use."
]
},
{
"cell_type": "code",
"execution_count": 15,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": true
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nfCWOOsqWHJ0wIXQSEcm
"text/plain": [
"<matplotlib.figure.Figure at 0x1124d6690>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(-1.4, 1.4, 30)\n",
2016-02-16 21:40:20 +01:00
"plt.plot(x, x**2)\n",
"plt.savefig(\"my_square_function.png\", transparent=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Subplots\n",
2016-02-16 21:40:20 +01:00
"A matplotlib figure may contain multiple subplots. These subplots are organized in a grid. To create a subplot, just call the `subplot` function, and specify the number of rows and columns in the figure, and the index of the subplot you want to draw on (starting from 1, then left to right, and top to bottom). Note that pyplot keeps track of the currently active subplot (which you can get a reference to by calling `plt.gca()`), so when you call the `plot` function, it draws on the *active* subplot.\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": true
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nDjz3nG395Eu+OVZE5CB
"text/plain": [
"<matplotlib.figure.Figure at 0x1127514d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(-1.4, 1.4, 30)\n",
2016-02-16 21:40:20 +01:00
"plt.subplot(2, 2, 1) # 2 rows, 2 columns, 1st subplot = top left\n",
"plt.plot(x, x)\n",
"plt.subplot(2, 2, 2) # 2 rows, 2 columns, 2nd subplot = top right\n",
"plt.plot(x, x**2)\n",
"plt.subplot(2, 2, 3) # 2 rows, 2 columns, 3rd subplot = bottow left\n",
"plt.plot(x, x**3)\n",
"plt.subplot(2, 2, 4) # 2 rows, 2 columns, 4th subplot = bottom right\n",
"plt.plot(x, x**4)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Note that `subplot(223)` is a shorthand for `subplot(2, 2, 3)`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is easy to create subplots that span across multiple grid cells like so:"
]
},
{
"cell_type": "code",
"execution_count": 17,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\n6sb8ad8e7rlHRT9N1dQ
"text/plain": [
"<matplotlib.figure.Figure at 0x11290f950>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.subplot(2, 2, 1) # 2 rows, 2 columns, 1st subplot = top left\n",
"plt.plot(x, x)\n",
"plt.subplot(2, 2, 2) # 2 rows, 2 columns, 2nd subplot = top right\n",
"plt.plot(x, x**2)\n",
"plt.subplot(2, 1, 2) # 2 rows, *1* column, 2nd subplot = bottom\n",
"plt.plot(x, x**3)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you need more complex subplot positionning, you can use `subplot2grid` instead of `subplot`. You specify the number of rows and columns in the grid, then your subplot's position in that grid (top-left = (0,0)), and optionally how many rows and/or columns it spans. For example:"
]
},
{
"cell_type": "code",
"execution_count": 18,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEACAYAAABWLgY0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXe4FOXVwH+HoqJEREFQELsgNkBDsQQwFsTea+xKjEaN\nJRr1oyT2RBNrVGygErCLHRt2UBSkKE0UEAVFJCJIvef748wN62X3bpvZmd17fs8zz53defd9z52d\nOfvOeU8RVcVxHMepTOrFLYDjOI4THa7kHcdxKhhX8o7jOBWMK3nHcZwKxpW84zhOBeNK3nEcp4LJ\nquRFpLWIvC4ik0Rkgoicn6HdrSIyTUTGiUiH8EV1HCcsRGRtERktImODe/vauGVyoqFBDm1WAhep\n6jgRaQx8JCIjVHVydQMROQDYWlW3FZEuwF1A12hEdhynWFR1mYj0VNUlIlIfeFdE9lDVd+OWzQmX\nrDN5VZ2rquOC/Z+Az4BWNZodCgwO2owGmohIi5BldRwnRFR1SbC7NqYLfohRHCci8rLJi8gWQAdg\ndI1DrYDZKa/nsOYPgeM4CUJE6onIWGAuMFJVP41bJid8clbyganmceCCYEbvOE4Zo6pVqtoRaA38\nRkS6xy2TEz652OQRkQaYgn9IVZ9J02QOsFnK69bBezX78UQ5jhMxqip5tv9RRJ4HdgPeTD3m92xy\nyPd7rSbXmfz9wKeqekuG48OBkwFEpCuwUFXnpWuoqmm3xYvTvx/l1q9fv5KPWU7yJFGmui5Ptvsk\nV0SkmYg0CfYbAfsC4/K5Z0txfsI4v+UowzffKFVV+X+v6cjFhXIP4ERg78Dd6mMR6SUifUTk7OAi\neAH4QkSmA3cDf8hHiPnzYautYNmyAv4Dx6kjrFgB224Lc9Z4Ri6ITYA3Apv8KGC4qr4WSs9OUSxd\nCl26wPjx4fSX1Vyj5lJVP4d25xUqRLNm0L49PPccHHlkob04TmUzYgRsvjm0CsGlQVUnAJ2K78kJ\nm9tvh06dYJddwukvMRGvp5wCgwaVdswePXqUdsAsJE0eSJ5MdVmeQYPsPiknij0/YZzfcpJhwQK4\n4Qa47rqih/wfUqy9J6/BRDTTeIsWwWabwdSpsPHGJRPJccqCH36ALbeEL76Apk0ztxMRtMAFugz9\nZbxnnfC5+GJYsgT+/e9fvl/M95qYmfyvfgWHHAJDhsQtieMkj2HDYL/9alfw+ZBruhKndHzxBTz4\nIPTrF26/iVHyYI+igwfHLYXjJI/Bg0M31VSnK9kB6AacKyLtQh3ByYurroLzz4eWLcPtN1FKvmdP\n87SZMCFuSRwnOUydCjNmwP77h9en5pauxCkRb75p28UXh993opR8vXpw0kmlX4B1nCQzeDCccAI0\nyCl0MX9qSVfilIClS+Hss82rpnHj8PtPzMJrNVOmQI8eMHt2dBe145QLVVW24Dp8eG4udfku0AXp\nSkYCf9M00ey+8Bo9ffvCxInw5JOZ2xSz8Jo4Ndq2rfkCv/IKHHBA3NI4Try8+aYttoblM51KDulK\nAOjfv///9nv06JE4N9ZyZtIk86QZVyPWeOTIkYwcOTKUMRI3kwe480546y0YOrQEQjlOgjn1VNh5\nZ7jootza5zPjE5HBwHxVzdi7z+Sjo6oK9trLTNTnnFN722Jm8olU8gsWWJqDL7+EDTaIXi7HSSI/\n/WSxI5MnQ4scqzPkqgyCdCVvARMADbYrVPWlGu1cyUfEtdfCyy/DG2/YemRtVJS5BmDDDWGffeCx\nx+Css+KWxnHi4amnYI89clfw+ZBruhInGt5+G269FcaMya7giyVR3jWpnHyye9k4dZtBg+w+cCqL\n+fPNW+qBB6B16+jHS6S5BizjXuvW8O67sM02EQvmOAlj9mzo0MEyTq6zTu6f87QGyaaqCg46CHba\nyXLU5EpFpDWoScOGcPzxHgHr1E0eegiOPjo/BZ8PInKfiMwTkZAS2jq50K8f/Pe/cPXVpRszsUoe\nLIz7oYfs189x6gqqkaQxqMkDQIgxtE427rkH/vMfW2tp2LB04yZayXfoYBFgb78dtySOUzo++MAm\nNl27RjeGqr4D/BDdCE4qzz1ns/iXXip9lt1EK3mRePLMO06cVC+4SmiWdSdORo2C006Dp5+OZ30x\nkS6UqZx4olWNuuUWS0fsOJXMzz/Do4/CRx/FLclqPOK1cN54A4491sxvXbrk/rmKj3ityeGHQ+/e\n7jPvVD4PPWQ1FV58sbDP5xnxujnwrKruXEsb964pkGeeMZ312GPQvXtxfVWkd00qZ59tixaOU+nc\nc49d7yVCgs0Jmfvug9//Hl54oXgFXyxloeT32w++/RY+/jhuSRwnOj79FKZPNz/qqBGRIcB7wHYi\nMktETot+1MpnyRI44wz4xz/g9ddht93ilqhMlHz9+nDmmTBwYNySOE50DBwIp59eGvc6VT1BVTdV\n1bVVtY2qPhD9qJXNlClmd1+2DD78ELbfPm6JjLKwyYNF/u20E8yaFU1ifceJk6VLLRnZBx9Y/vhC\n8YjX0rN0Kdx4ozmHXHed2eHD9oyqeJs8QKtWlpbz0UfjlsRxwufJJ6FTp+IUvFNaVK2Yyw47wCef\nmDn57LOT5/paNkoefAHWqVxKvOAKgIj0EpHJIjJVRC4r7ejly4oV8Mgj0LEjXHGFFf144gkrdpRE\nysZcA7BqFWyxhUWPRVEpx3HiYMoU88CYPbt4e3we+eTrAVOB3wJfAx8Cx6nq5Brt3FyDzdrHjzdL\nwsMPW72LSy+16nWlmLlXXD75TKQuwN5+e9zSOE44DBxoEZGlzGcCdAamqepMABEZChwKTK71U3WI\nr7+2LLjvvGPpCJYvh2OOscjVjh3jli53ss7kReQ+4CBgXrqgCRHpDjwDzAjeelJV0+ZYC2NWUJ2C\ndfZsWHfdorpynNhZtswWXN9/H7beuvj+8pjJHwnsr6pnB69PAjqr6vk12pXFTF7VlPDy5fbEX1X1\ny8SGqqvfX7XKIouXLIHFi+H7781F+9tv4YsvYOpU25Yvt6Ite+4JPXuaO2Rc9vaoZ/IPALcBtSX9\nfUtVDylEgHzZbDPYfXd7bDr11FKM6DjR8dRTZnoMQ8FHRdxpDVautBiCzz4z5TttGnzzDXz3nSnm\nRYtMYdevD2utZX/r1zeFnKqUq9+vV88miOuuC40awUYbWdKw5s1t8fu446BtW9h00+irNmWi5GkN\nagt/Dmbyl6jqwTn0E8qsYPhwuP56eO+9ortynFjZe2+LjDzmmHD6y2Mm3xXor6q9gteXA6qqN9Ro\nV/KZvKp5qwwfbqaSUaNM4e6wA2y3HWy7rXnbVSvmJk1MWTcoK+NzfkReyDsHJf8E8BUwB7hUVT/N\n0E8oF8zKlbaS/dJL5jvvOOXI1KnmFjx7ts1AwyAPJV8fmIItvH4DfAAcr6qf1WhXMiU/Ywbcf789\npa9caTmrevSwJ/eNNiqJCIklbj/5j4A2qtoBuB14OoQ+a6VBAwsd9ghYp5y5915LpR2Wgs8HVV0F\nnAeMACYBQ2sq+FLx4Yf2JNO5s9nKhwyBzz+Hm26Cgw92BV8sRc/k07T9AthVVRekOab9+vX73+ti\n7HszZ5r9zBdgnXJk2TJo08YK4my3XeH91LTdDhgwoGwiXqdNgwsvhIkT4U9/sombpxNPTynMNVtg\nSn4N44iItFDVecF+Z+BRVd0iQz+hXjC9e9siiVe0d8qNRx+Fu+6yJFZhUg5pDRYvhmuvhbvvhssv\nh/PPj+dpppyI1LsmyFbXA9hIRGYB/YC1sEWae4CjROQcYAXwM3BsIYIUwtlnw9//7kreKT/uvrv0\nEa5JYNw4K1C+2262uNqqVdwSVT5lFfFak5UrLfLs6afNdOM45cCkSbDPPvDll7D22uH2ncuMT0SO\nAvoD2wO/VtWMSbzDumdVLXXDVVfBbbfZE7iTO3EvvMZGgwZw7rlw661xS+I4uXPbbeY2GbaCz4MJ\nwOHAm6UYbPlyW2C+4w5
"text/plain": [
"<matplotlib.figure.Figure at 0x112e72bd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.subplot2grid((3,3), (0, 0), rowspan=2, colspan=2)\n",
"plt.plot(x, x**2)\n",
"plt.subplot2grid((3,3), (0, 2))\n",
"plt.plot(x, x**3)\n",
"plt.subplot2grid((3,3), (1, 2), rowspan=2)\n",
"plt.plot(x, x**4)\n",
"plt.subplot2grid((3,3), (2, 0), colspan=2)\n",
"plt.plot(x, x**5)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you need even more flexibility in subplot positioning, check out the [GridSpec documentation](http://matplotlib.org/users/gridspec.html)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Multiple figures\n",
2016-02-16 21:40:20 +01:00
"It is also possible to draw multiple figures. Each figure may contain one or more subplots. By default, matplotlib creates `figure(1)` automatically. When you switch figure, pyplot keeps track of the currently active figure (which you can get a reference to by calling `plt.gcf()`), and the active subplot of that figure becomes the current subplot."
]
},
{
"cell_type": "code",
"execution_count": 19,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": true
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\n1q6Fyy+3ZhznXPZ54gk
"text/plain": [
"<matplotlib.figure.Figure at 0x11263cfd0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nYLVpE5KshQtjRyJS3pY
"text/plain": [
"<matplotlib.figure.Figure at 0x112481310>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(-1.4, 1.4, 30)\n",
2016-02-16 21:40:20 +01:00
"\n",
"plt.figure(1)\n",
"plt.subplot(211)\n",
"plt.plot(x, x**2)\n",
"plt.title(\"Square and Cube\")\n",
"plt.subplot(212)\n",
"plt.plot(x, x**3)\n",
"\n",
"plt.figure(2, figsize=(10, 5))\n",
"plt.subplot(121)\n",
"plt.plot(x, x**4)\n",
"plt.title(\"y = x**4\")\n",
"plt.subplot(122)\n",
"plt.plot(x, x**5)\n",
"plt.title(\"y = x**5\")\n",
"\n",
"plt.figure(1) # back to figure 1, current subplot is 212 (bottom)\n",
"plt.plot(x, -x**3, \"r:\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Pyplot's state machine: implicit *vs* explicit\n",
2016-02-16 21:40:20 +01:00
"So far we have used Pyplot's state machine which keeps track of the currently active subplot. Every time you call the `plot` function, pyplot just draws on the currently active subplot. It also does some more magic, such as automatically creating a figure and a subplot when you call `plot`, if they don't exist yet. This magic is convenient in an interactive environment (such as Jupyter).\n",
"\n",
"But when you are writing a program, *explicit is better than implicit*. Explicit code is usually easier to debug and maintain, and if you don't believe me just read the 2nd rule in the Zen of Python:"
]
},
{
"cell_type": "code",
"execution_count": 20,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Zen of Python, by Tim Peters\n",
"\n",
"Beautiful is better than ugly.\n",
"Explicit is better than implicit.\n",
"Simple is better than complex.\n",
"Complex is better than complicated.\n",
"Flat is better than nested.\n",
"Sparse is better than dense.\n",
"Readability counts.\n",
"Special cases aren't special enough to break the rules.\n",
"Although practicality beats purity.\n",
"Errors should never pass silently.\n",
"Unless explicitly silenced.\n",
"In the face of ambiguity, refuse the temptation to guess.\n",
"There should be one-- and preferably only one --obvious way to do it.\n",
"Although that way may not be obvious at first unless you're Dutch.\n",
"Now is better than never.\n",
"Although never is often better than *right* now.\n",
"If the implementation is hard to explain, it's a bad idea.\n",
"If the implementation is easy to explain, it may be a good idea.\n",
"Namespaces are one honking great idea -- let's do more of those!\n"
]
}
],
2016-02-16 21:40:20 +01:00
"source": [
"import this"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fortunately, Pyplot allows you to ignore the state machine entirely, so you can write beautifully explicit code. Simply call the `subplots` function and use the figure object and the list of axes objects that are returned. No more magic! For example:"
]
},
{
"cell_type": "code",
"execution_count": 21,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": true
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nCwMeesgGL1hMDPDaa8D
"text/plain": [
"<matplotlib.figure.Figure at 0x1127e8110>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nkqiNG/3K1pkz/SKoEHT
"text/plain": [
"<matplotlib.figure.Figure at 0x112420750>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(-2, 2, 200)\n",
2016-02-16 21:40:20 +01:00
"fig1, (ax_top, ax_bottom) = plt.subplots(2, 1, sharex=True)\n",
"fig1.set_size_inches(10,5)\n",
"line1, line2 = ax_top.plot(x, np.sin(3*x**2), \"r-\", x, np.cos(5*x**2), \"b-\")\n",
"line3, = ax_bottom.plot(x, np.sin(3*x), \"r-\")\n",
2016-02-16 21:40:20 +01:00
"ax_top.grid(True)\n",
"\n",
"fig2, ax = plt.subplots(1, 1)\n",
"ax.plot(x, x**2)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For consistency, we will continue to use pyplot's state machine in the rest of this tutorial, but we recommend using the object-oriented interface in your programs.\n",
"\n",
2016-03-03 18:29:41 +01:00
"# Pylab *vs* Pyplot *vs* Matplotlib\n",
2016-02-16 21:40:20 +01:00
"\n",
"There is some confusion around the relationship between pylab, pyplot and matplotlib. It's simple: matplotlib is the full library, it contains everything including pylab and pyplot.\n",
"\n",
"Pyplot provides a number of tools to plot graphs, including the state-machine interface to the underlying object-oriented plotting library.\n",
"\n",
"Pylab is a convenience module that imports matplotlib.pyplot and NumPy in a single name space. You will find many examples using pylab, but it is no longer recommended (because *explicit* imports are better than *implicit* ones)."
2016-02-16 21:40:20 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Drawing text\n",
2016-02-16 21:40:20 +01:00
"You can call `text` to add text at any location in the graph. Just specify the horizontal and vertical coordinates and the text, and optionally some extra attributes. Any text in matplotlib may contain TeX equation expressions, see [the documentation](http://matplotlib.org/users/mathtext.html) for more details."
]
},
{
"cell_type": "code",
"execution_count": 22,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEACAYAAABWLgY0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4VGX2wPHvm0RCb4mAdFBQUERQUCwQQJogCAsiKs2C\nuCi6spafgoDuCigqumLBVQEFZAURBFFQCL2JFGkiAhFpiXQktOT9/XEyqZNkkszMnZmcz/PkyWTm\nzp1zc5Mz75z7FmOtRSmlVGgKczoApZRSvqNJXimlQpgmeaWUCmGa5JVSKoRpkldKqRCmSV4ppUJY\nrkneGFPVGLPIGLPVGPOzMWawm21aGGOOG2N+Svka6ptwlVJK5UWEB9tcBJ6y1m40xpQE1htjFlhr\nd2Tabqm1trP3Q1RKKZVfubbkrbWHrLUbU26fBrYDVdxsarwcm1JKqQLKU03eGFMTuA5Y4+bhZsaY\njcaYecaY+l6ITSmlVAF5Uq4BIKVUMwN4IqVFn956oLq19owxpgPwFVDXe2EqpZTKD+PJ3DXGmAhg\nLjDfWvuWB9vvAa631h7NdL9OlKOUUvlgrc1XSdzTcs3HwLbsErwxpmK6202RN4+j7ra11obs1/Dh\nwx2PQY9Pj6+wHVthOL6CyLVcY4y5BbgP+NkYswGwwPNADcnZdgLQ3RjzKHABSAR6FigqpZRSXpFr\nkrfWrgDCc9lmPDDeW0EppZTyDh3x6kUxMTFOh+BTenzBK5SPDUL/+ArCowuvXnsxY6w/X08ppUKB\nMQbr4wuvSimlgpAmeaWUCmGa5JVSKoRpkldKqRCmSV4ppUKYJnmllAphmuSVUiqEaZJXSqkQpkle\nKaVCmCZ5pZQKYZrklVIqhGmSV0qpEKZJXimlQpgmeaWUCmGa5JVSKoRpkldKqQA2d27Bnu/3RUNO\nnrSUKuW3l1RKqaBlLTRpAuvXB9GiIRMn+vsVlVIqOK1cCSdOFGwffk/y//kPJCf7+1WVUir4vP02\nPP54wfbh9yRfqhR8+62/X1UppYLLvn2wcCH061ew/fg9yQ8eLO9OSimlsvfee9C7N5QuXbD9+P3C\n69mzlho1IDYWrrrKby+tlFJBIzERatSAFSugTh0wJoguvEZGwoABUptXSimV1dSp0LSpJPiC8ntL\n3lrLwYNQvz7s2QNly/rt5ZVSKuBZCw0bwtix0Lat3BdULXmAyy6DO+6Ajz924tWVUipwLVkCFy9C\nmzbe2Z9jI14HD5aSTVKSUxEopVTgeest6TZp8tVuz8qxJH/jjVCxYsGH7CqlVKjYsweWLoU+fby3\nT0fnrtHulEoplebdd6F/fyhRwnv7dOTCq8v581CzJnz3HTRo4LcwlFIq4Pz1l3Sb/PFHyYvpBd2F\nV5ciReDRR7U7pVJKffop3HZb1gRfUI625AHi4+HKK2HXLoiK8lsoSikVMKyFq6+Wck1MTNbHg7Yl\nD1ChAnTpAv/9r9ORKKWUM77/Hi65BFq08P6+HW/JA/z0E9x1F+zeDRERfgtHKaUCQqdO0LUrPPig\n+8eDuiUP0LixXHD46iunI1FKKf/69VdYuxbuvdc3+881yRtjqhpjFhljthpjfjbGDM5mu7eNMb8a\nYzYaY67LayBPPCGDAJRSqjB55x146CEoVsw3+8+1XGOMqQRUstZuNMaUBNYDXay1O9Jt0wF4zFrb\n0RhzI/CWtfYmN/tyW64BGcZbu7a05hs3LsARKaVUkDh5UnrTbNoE1aplv51PyzXW2kPW2o0pt08D\n24EqmTbrAkxO2WYNUMYYUzEvgUREwKBB2p1SKVV4TJokc9TklOALKk81eWNMTeA6YE2mh6oA+9L9\nvJ+sbwS5eughacnHx+f1mUopFVySk6VRO9htAdx7PO7LklKqmQE8kdKiz5cRI0ak3o6JiSEmXafQ\nqCjo0QMmTIChQ/P7CkopFfi+/VZWfbr55qyPxcbGEhsb65XX8agLpTEmApgLzLfWZrk8aox5H1hs\nrZ2e8vMOoIW19nCm7bKtybv8/DO0by8T9RQp4vmBKKVUMGnXDu67z7PJyPzRhfJjYJu7BJ9iDtAn\nJZibgOOZE7ynGjSQZQFnzszPs5XKv1On5KNzrVoyMCU8HDZvdjqq/KlZUzoyqMC0fbtcbO3Z0/ev\n5UkXyluA+4BWxpgNxpifjDHtjTGPGGMGAFhrvwH2GGN2AR8Afy9IUIMHa3fKgkhOhg8/lOHRUVHy\niahiRVlt5uGH4euvnY4wMD39tHRnu/ZaeP55GD4cKlVyOir3YmIgLIf/XmO8Nx+58r7//AceeUSW\nQ/W1gBjxmllSkqxtOHUq3JSlI6bKSXIydOwoM3uWKye3q1aVGT+3boVly6SL6tKlTkcaeKpVg5Il\npZUV6Fq2lHOY3aI7e/bI91q1/BeT8syxY3D55fL/eNllnj2nIOWagJxEIDwc/vEPePVV+PJLp6MJ\nLtOmSYJv1EiWEStZMuPjZ8/Cmsx9oxQABw74Zu4QJ2hyD1zjx8t8XZ4m+IIKiGkN3HngAVi+HH75\nxelIgsvKlfIxvW/frAkeoGhR94ns9Gl46ilpzRYrBvXqwZtvSoswLEzOR3o5lQsmTZLHJk/OeH9s\nLAwYILPtlSkDxYvLNZiXXoJz57LuZ8QI2c/SpWmf6kqVylprXrMGuneXf5rISKheHQYOhIMHs/kl\nZdKyZdqxxMbK7bAwaNVK7ps40f3xuKTf1l3sM2bISmglSkj5rFcveUNx59gxeOEF+b2UKCEL3V93\nHfzf/0FiIsTFpe3X2rRYM8eQXU3+/HkYPVpKUiVKyHlo3hy++CLrtq7XeuABuX3PPXDppfL30aQJ\nzJuX/e9UuZeYKCXBZ57x32sGZEse5A9w0CB47TWdoTIvoqLkn3/nTs+fc/68JIgff5SEcv/9cPw4\n/Otf8mnAXW03t5qvu8fGjJE37ZtvlgmZzp6FFSskIS5ZIjPxpX+e6zXGjpXH7rxT4jxxIm2bjz+W\n2mbRotC5s7xJ/forfPSRXHtYs0bKVTnp318S/YgRkhz79ZP7XfN656e+7XrO+PESR+fO8sa4Zg1M\nny4XdDdulAu8Lnv3yjb79sH118Pf/y7lt507Ydw4WXuhbFmJ85NP4Pff5barApp+HnJ38V64AG3b\nyhtEvXrw2GNw5oy8CfXsKRcC//WvrM/buxeaNpUSQ58+cPSoHMNdd8l5CZVPP/7wySfyhl+vnh9f\n1Frrty95Oc/9+ae15cpZu39/np5WqG3YYG2RItaGhVnbu7e1X35pbVxczs/597+tNcbaHj0y3r93\nr7Xly8u++vfP+FhMjNzvzsSJ8tikSRnv37PH/fYvvijb/+9/Ge8fMULiKlnS2k2bsj5v50451rp1\nrT14MONjixZZGx5ubbdu7l/THWOsbdky6/3ZHU9Oz3PFXqaMtVu3Znzs3ntlf198kfH+Zs3k/jFj\nsr7GkSPWnjuX9nNOv39rra1Z09patTLe98orElOnTtYmJaXdn5Ag24eFWbtqVdr9e/fK9mFh1r78\ncsZ9ffedPNaxY/YxqIwuXJBzsmJF3p+bkjvzlXcDtlwD0irt3VtaMcoz110HU6ZIr5ApU+Bvf5MW\nXnQ0dOvmfuH0Tz6R6yBjxmS8v0YN6enkrWvz2a1488QT8hrffef+8UcekfJCZu++K3MejRuXtRdM\ny5bSev76a1lWzSlPPAH162e87+GH5XjXrk2776efYPVquZbi7qN8+fIFHzfy8cdSfnnjjYyltuho\nGDZMYnL3qblGDSkhpde2rZTF0h+DytmMGVClivvBT74UsOUal6eekt4gzz8vH1VV7rp3l7mpFy+W\n6xobNsj32bNl2oi+fSWxg9Tif/tN/mHdXayLiYGRI70T15kzkpC/+kpKEKdOpb2BGAP792d9jjFS\n/3Vn9Wr5HhvrPtnEx0vvk507JXn6mzFSdsnMNU/JsWNp97mOpW1b38TiOs9Vq0rPtcxc9fwNG7I+\ndt117ss/1aqlxa1yZq0
"text/plain": [
"<matplotlib.figure.Figure at 0x11263c210>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(-1.5, 1.5, 30)\n",
2016-02-16 21:40:20 +01:00
"px = 0.8\n",
"py = px**2\n",
"\n",
"plt.plot(x, x**2, \"b-\", px, py, \"ro\")\n",
"\n",
"plt.text(0, 1.5, \"Square function\\n$y = x^2$\", fontsize=20, color='blue', horizontalalignment=\"center\")\n",
"plt.text(px - 0.08, py, \"Beautiful point\", ha=\"right\", weight=\"heavy\")\n",
"plt.text(px, py, \"x = %0.2f\\ny = %0.2f\"%(px, py), rotation=50, color='gray')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Note: `ha` is an alias for `horizontalalignment`\n",
"\n",
"For more text properties, visit [the documentation](http://matplotlib.org/users/text_props.html#text-properties).\n",
"\n",
"It is quite frequent to annotate elements of a graph, such as the beautiful point above. The `annotate` function makes this easy: just indicate the location of the point of interest, and the position of the text, plus optionally some extra attributes for the text and the arrow."
]
},
{
"cell_type": "code",
"execution_count": 23,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEACAYAAABWLgY0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4VMX6wPHvJCEQAkgLNTTpQbpAUEoUqaKC0r0gCAIK\nV/RaLgoi9QcIIqggogiioEgsIOgVFQIKSO8ERQwQBAHphpYyvz8mCSEkZJPs7tmz+36eJw+7m5Nz\n3sNJ3p2dM/OO0lojhBDCO/lZHYAQQgjXkSQvhBBeTJK8EEJ4MUnyQgjhxSTJCyGEF5MkL4QQXizL\nJK+UClVKrVJK7VVK7VZKPZ3BNi2VUueUUtuSv0a6JlwhhBDZEeDANgnAf7TWO5RSBYCtSqmVWuv9\n6bZbq7V+0PkhCiGEyKksW/Ja67+01juSH/8DRANlM9hUOTk2IYQQuZStPnmlVEWgHrAxg283VUrt\nUEqtUEqFOSE2IYQQueRIdw0AyV01kcCw5BZ9WluB8lrrS0qp9sBXQDXnhSmEECInlCO1a5RSAcBy\n4Fut9QwHto8BGmqtz6R7XQrlCCFEDmitc9Ql7mh3zQfAvswSvFKqZJrHjTFvHmcy2lZr7bVfr776\nquUxyPnJ+fnaufnC+eVGlt01Sqm7gUeB3Uqp7YAGXgYqmJyt5wBdlFJPAvHAZaB7rqISQgjhFFkm\nea31OsA/i21mAjOdFZQQQgjnkBmvThQREWF1CC4l52df3nxu4P3nlxsO3Xh12sGU0u48nhBCeAOl\nFNrFN16FEELYkCR5IYTwYpLkhRDCi0mSF0IILyZJXgghvJgkeSGE8GKS5IUQwotJkhdCCC8mSV4I\nIbyYJHkhhPBikuSFEMKLSZIXQggvJkleCCG8mCR5IYTwYpLkhRDCi0mSF0IID7Z8ee5+3u2Lhly4\noClY0G2HFEII29IaGjWCrVtttGjI/PnuPqIQQtjT+vVw/nzu9uH2JP/WW5CU5O6jCiGE/bz5Jvz7\n37nbh9uTfMGC8L//ufuoQghhL7Gx8P330Ldv7vbj9iT/9NPm3UkIIUTm3nkHeveGQoVytx+333i9\nckVToQJERUGNGm47tBBC2Mbly1ChAqxbB1WrglI2uvGaNy8MHGj65oUQQtxs0SJo3Ngk+Nxye0te\na83x4xAWBjExULiw2w4vhBAeT2uoWxemToU2bcxrtmrJA5QuDR06wAcfWHF0IYTwXGvWQEICtG7t\nnP1ZNuP16adNl01iolURCCGE55kxwwybVDlqt9/MsiTfpAmULJn7KbtCCOEtYmJg7Vro08d5+7S0\ndo0MpxRCiOtmzYJ+/SA42Hn7tOTGa4pr16BiRfjuO6hd221hCCGEx4mLM8Mmt2wxeTEt2914TREY\nCE8+KcMphRDio4+gefObE3xuWdqSBzh5EqpXh99/h2LF3BaKEEJ4DK2hVi3TXRMRcfP3bduSByhR\nAh56CN5/3+pIhBDCGj/8AHnyQMuWzt+35S15gG3boFMn+OMPCAhwWzhCCOEROnaEzp2hf/+Mv2/r\nljxAgwbmhsNXX1kdiRBCuNeBA7BpE/Tq5Zr9Z5nklVKhSqlVSqm9SqndSqmnM9nuTaXUAaXUDqVU\nvewGMmyYmQQghBC+5O23YcAACApyzf6z7K5RSpUCSmmtdyilCgBbgYe01vvTbNMeGKq1vl8p1QSY\nobUOz2BfGXbXgJnGe/vtpjXfoEEuzkgIIWziwgUzmmbnTihXLvPtXNpdo7X+S2u9I/nxP0A0UDbd\nZg8BC5K32QjcppQqmZ1AAgJgyBAZTimE8B0ffmhq1NwqwedWtvrklVIVgXrAxnTfKgvEpnn+Jze/\nEWRpwADTkj95Mrs/KYQQ9pKUZBq1T2fYAe48Do9lSe6qiQSGJbfoc2T06NGpjyMiIohIMyi0WDHo\n2hXmzIGRI3N6BCGE8Hz/+59Z9emuu27+XlRUFFFRUU45jkNDKJVSAcBy4Fut9U23R5VSs4HVWuvF\nyc/3Ay211ifSbZdpn3yK3buhXTtTqCcw0PETEUIIO2nbFh591LFiZO4YQvkBsC+jBJ9sGdAnOZhw\n4Fz6BO+o2rXNsoCff56TnxZCCM8XHW1utnbv7vpjOTK65m5gLbAb0MlfLwMVAK21npO83dtAOyAO\n6Ke13pbBvrJsyQMsXQoTJ8Ivv2TvZIQQwg6eegpCQmDMGMe2z01L3iNmvKaXmGjWNly0CMJvGogp\nhBD2dfYsVK4Me/eaVfIcYfsZr+n5+8Ozz8Jrr1kdiRBCONfMmaZel6MJPrc8siUPprZypUrw00+m\nSqUQQtjd5csmr61eDTVrOv5zXteSB7MyypAhMGWK1ZEIIYRzzJtnlj7NToLPLY9tyQOcPm365vfs\ngTJlXBiYEEK4WEICVKsGH3+c8dj4W/HKljyYyVG9e8P06VZHIoQQuRMZCWXLZj/B55ZHt+QBDh82\nBcsOHoTChV0UmBBCuJDWJo+NG2dqx2eX17bkwdSZ79ABZs+2OhIhhMiZ77+H+HiTy9zN41vyYEod\ntGljSh3ky+eCwIQQwoVatYLHHnOshEFGvLolD6bUQYMGsGCB1ZEIIUT2bNliVn/q2dOa49uiJQ+w\ndq0pRRwdbSZLCSGEHXTrZm62PvNMzvfh9S15gObNzWgbWQdWCGEXv/8OUVGmgWoV2yR5peC//4XJ\nk82daiGE8HRTp8LgwVCggHUx2Ka7BsxKKrVqwaxZcM89TgxMCCGc7K+/ICwMfv3VVJzMDZ/orgHw\n84MXXjCteSGE8GRvvgm9euU+weeWrVryAFevmjKdy5dDvXpOCkwIIZzowgW4/XbYvNkUJMstn2nJ\nA+TNa+5SSxliIYSnmjPHzO1xRoLPLdu15MH575JCCOEsruht8KmWPJgVzgcOhNdftzoSIYS40cKF\ncMcdntOdbMuWPMCJE6YmszPuXAshhDMkJZkRNe+849wRgD7XkgcoWdLMJHvrLasjEUIIY9ky09MQ\nEWF1JNfZtiUPZjZZ06amcJmVkw2EEEJrU77g+efhkUecu2+fbMkDVKliPhK9/77VkQghfN1PP5nV\n7Dp1sjqSG9m6JQ+wdSt07mwWFcmTx6m7FkIIh91/v0nwTzzh/H37bEseoGFDs27iJ59YHYkQwlft\n3g3bt5vlSj2N7ZM8mMJlkyZBYqLVkQghfNGkSTBsmGcuauQVSf6+++C222DJEqsjEUL4muhos7zf\nU09ZHUnGbN8nn2LlSvNOumePLCoihHCfnj2hbl0YPtx1x/DpPvkUrVtD0aKweLHVkQghfMXevbBq\nFQwdanUkmfOaljzADz+Y/+y9e6U1L4Rwve7dzeCPF1907XGkJZ+sVStT4kBG2gghXG3PHlizBoYM\nsTqSW/OqljyYj06DB8O+fRAQ4NJDCSF8WNeu0KSJmeHqatKST+Oee6BUKVi0yOpIhBDeatcuM8P1\nySetjiRrXteSB1i92pQijo6W1rwQwvm6dDF1s557zj3Hk5Z8OvfcA2XLmrrOQgjhTDt3wrp19mjF\ng5e25MHcEOnfH/bvl9a8EMJ5Hn4YmjeHZ5913zFd2pJXSs1VSp1QSu3K5PstlVLnlFLbkr9G5iQQ\nZ2vZEsqXh48+sjoSIYS32LEDfvnFDO6wiyxb8kqpZsA/wAKtdZ0Mvt8SeE5r/WCWB3NjSx7MjZHH\nHjOrR0mFSiFEbnXqZLqDhw1z73Fd2pLXWv8MnM0qhpwc3NWaNzcLfi9YYHUkQgi727YNNm82gzrs\nxFk3XpsqpXYopVYopcKctE+nGD0axo+Ha9esjkQIYWejR5v6NEFBVkeSPc5I8luB8lrresDbwFdO\n2KfTNGtmVpD68EOrIxFC2NWWLaYl74oFQVwt1+NOtNb/pHn8rVJqllKqqNb6TEbbjx49OvVxREQE\nEW5Y8XbMGOjVy/TPBwa6/HBCCC+T0op3V734qKgooqKinLIvh4ZQKqUqAl9rrWtn8L2SWusTyY8b\nA59prStmsh+33nhNq21
"text/plain": [
"<matplotlib.figure.Figure at 0x112639310>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.plot(x, x**2, px, py, \"ro\")\n",
"plt.annotate(\"Beautiful point\", xy=(px, py), xytext=(px-1.3,py+0.5),\n",
" color=\"green\", weight=\"heavy\", fontsize=14,\n",
" arrowprops={\"facecolor\": \"lightgreen\"})\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also add a bounding box around your text by using the `bbox` attribute:"
]
},
{
"cell_type": "code",
"execution_count": 24,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nTzzRjdtvv5ly5YKoXbs
"text/plain": [
"<matplotlib.figure.Figure at 0x1124adc90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.plot(x, x**2, px, py, \"ro\")\n",
"\n",
"bbox_props = dict(boxstyle=\"rarrow,pad=0.3\", ec=\"b\", lw=2, fc=\"lightblue\")\n",
"plt.text(px-0.2, py, \"Beautiful point\", bbox=bbox_props, ha=\"right\")\n",
"\n",
"bbox_props = dict(boxstyle=\"round4,pad=1,rounding_size=0.2\", ec=\"black\", fc=\"#EEEEFF\", lw=5)\n",
"plt.text(0, 1.5, \"Square function\\n$y = x^2$\", fontsize=20, color='black', ha=\"center\", bbox=bbox_props)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just for fun, if you want an [xkcd](http://xkcd.com)-style plot, just draw within a `with plt.xkcd()` section:"
]
},
{
"cell_type": "code",
"execution_count": 25,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nMlRXV8Nms8FsNsNiscD
"text/plain": [
"<matplotlib.figure.Figure at 0x1128079d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"with plt.xkcd():\n",
" plt.plot(x, x**2, px, py, \"ro\")\n",
"\n",
" bbox_props = dict(boxstyle=\"rarrow,pad=0.3\", ec=\"b\", lw=2, fc=\"lightblue\")\n",
" plt.text(px-0.2, py, \"Beautiful point\", bbox=bbox_props, ha=\"right\")\n",
"\n",
" bbox_props = dict(boxstyle=\"round4,pad=1,rounding_size=0.2\", ec=\"black\", fc=\"#EEEEFF\", lw=5)\n",
" plt.text(0, 1.5, \"Square function\\n$y = x^2$\", fontsize=20, color='black', ha=\"center\", bbox=bbox_props)\n",
"\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Legends\n",
2016-02-16 21:40:20 +01:00
"The simplest way to add a legend is to set a label on all lines, then just call the `legend` function."
]
},
{
"cell_type": "code",
"execution_count": 26,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\n7ttzv5vWxtjwTz7pEWf
"text/plain": [
"<matplotlib.figure.Figure at 0x112807c50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(-1.4, 1.4, 50)\n",
2016-02-16 21:40:20 +01:00
"plt.plot(x, x**2, \"r--\", label=\"Square function\")\n",
"plt.plot(x, x**3, \"g-\", label=\"Cube function\")\n",
"plt.legend(loc=\"best\")\n",
"plt.grid(True)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Non linear scales\n",
2016-02-16 21:40:20 +01:00
"Matplotlib supports non linear scales, such as logarithmic or logit scales."
]
},
{
"cell_type": "code",
"execution_count": 27,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": true
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\n+WS0+45S5kmfJFPOaCl
"text/plain": [
"<matplotlib.figure.Figure at 0x11257c9d0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n6fvv3Y5tY8a4gfgBA6B
"text/plain": [
"<matplotlib.figure.Figure at 0x1128b3310>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nVVcCP8JiGG8At6nqW+F
"text/plain": [
"<matplotlib.figure.Figure at 0x1123e8750>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n4YfzTiEi9agmCsCiRdU
"text/plain": [
"<matplotlib.figure.Figure at 0x112928b10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(0.1, 15, 500)\n",
"y = x**3/np.exp(2*x)\n",
2016-02-16 21:40:20 +01:00
"\n",
"plt.figure(1)\n",
"plt.plot(x, y)\n",
"plt.yscale('linear')\n",
"plt.title('linear')\n",
"plt.grid(True)\n",
"\n",
"plt.figure(2)\n",
"plt.plot(x, y)\n",
"plt.yscale('log')\n",
"plt.title('log')\n",
"plt.grid(True)\n",
"\n",
"plt.figure(3)\n",
"plt.plot(x, y)\n",
"plt.yscale('logit')\n",
"plt.title('logit')\n",
"plt.grid(True)\n",
"\n",
"plt.figure(4)\n",
"plt.plot(x, y - y.mean())\n",
"plt.yscale('symlog', linthreshy=0.05)\n",
"plt.title('symlog')\n",
"plt.grid(True)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Ticks and tickers\n",
2016-02-16 21:40:20 +01:00
"The axes have little marks called \"ticks\". To be precise, \"ticks\" are the *locations* of the marks (eg. (-1, 0, 1)), \"tick lines\" are the small lines drawn at those locations, \"tick labels\" are the labels drawn next to the tick lines, and \"tickers\" are objects that are capable of deciding where to place ticks. The default tickers typically do a pretty good job at placing ~5 to 8 ticks at a reasonable distance from one another.\n",
"\n",
"But sometimes you need more control (eg. there are too many tick labels on the logit graph above). Fortunately, matplotlib gives you full control over ticks. You can even activate minor ticks.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\n1zCz/4ueG2dme5S8b3M
"text/plain": [
"<matplotlib.figure.Figure at 0x112e72590>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(-2, 2, 100)\n",
2016-02-16 21:40:20 +01:00
"\n",
"plt.figure(1, figsize=(15,10))\n",
"plt.subplot(131)\n",
"plt.plot(x, x**3)\n",
"plt.grid(True)\n",
"plt.title(\"Default ticks\")\n",
"\n",
"ax = plt.subplot(132)\n",
"plt.plot(x, x**3)\n",
"ax.xaxis.set_ticks(np.arange(-2, 2, 1))\n",
2016-02-16 21:40:20 +01:00
"plt.grid(True)\n",
"plt.title(\"Manual ticks on the x-axis\")\n",
"\n",
"ax = plt.subplot(133)\n",
"plt.plot(x, x**3)\n",
"plt.minorticks_on()\n",
"ax.tick_params(axis='x', which='minor', bottom='off')\n",
"ax.xaxis.set_ticks([-2, 0, 1, 2])\n",
"ax.yaxis.set_ticks(np.arange(-5, 5, 1))\n",
2016-02-16 21:40:20 +01:00
"ax.yaxis.set_ticklabels([\"min\", -4, -3, -2, -1, 0, 1, 2, 3, \"max\"])\n",
"plt.title(\"Manual ticks and tick labels\\n(plus minor ticks) on the y-axis\")\n",
"\n",
"\n",
"plt.grid(True)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Polar projection\n",
2016-02-16 21:40:20 +01:00
"Drawing a polar graph is as easy as setting the `projection` attribute to `\"polar\"` when creating the subplot."
]
},
{
"cell_type": "code",
"execution_count": 29,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nJlPpXyaoR48eCA4OVjR
"text/plain": [
"<matplotlib.figure.Figure at 0x11252f2d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"radius = 1\n",
"theta = np.linspace(0, 2*np.pi*radius, 1000)\n",
2016-02-16 21:40:20 +01:00
"\n",
"plt.subplot(111, projection='polar')\n",
"plt.plot(theta, np.sin(5*theta), \"g-\")\n",
"plt.plot(theta, 0.5*np.cos(20*theta), \"b-\")\n",
2016-02-16 21:40:20 +01:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# 3D projection\n",
2016-02-16 21:40:20 +01:00
"\n",
"Plotting 3D graphs is quite straightforward. You need to import `Axes3D`, which registers the `\"3d\"` projection. Then create a subplot setting the `projection` to `\"3d\"`. This returns an `Axes3DSubplot` object, which you can use to call `plot_surface`, giving x, y, and z coordinates, plus optional attributes."
]
},
{
"cell_type": "code",
"execution_count": 30,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": true
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAqsAAADtCAYAAACYhTypAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXlwZMl93/nJfGeduIFuoNHo6e7p6emZIYecGXFG5iWv\nLZuURdIUV5S1lmQtbUmUJYW0DoXWtpYMxWo3vNaGd62QTDMkm6S1uryyeJjkaCWTIqmhSA5FkcPh\nnH0Dje7GfdT5rsz9o1CFqkIBDXQDKDQ6PxEIXK8qM1++yvd9v/wdQmuNwWAwGAwGg8FwEJHd7oDB\nYDAYDAaDwbAZRqwaDAaDwWAwGA4sRqwaDAaDwWAwGA4sRqwaDAaDwWAwGA4sRqwaDAaDwWAwGA4s\nRqwaDAaDwWAwGA4s9i3+b/JaGQwGg8FgMBj2A9Hpj8ayajAYDAaDwWA4sBixajAYDAaDwWA4sBix\najAYDAaDwWA4sBixajAYDAaDwWA4sBixajAYDAaDwWA4sBixajAYDAaDwWA4sBixajAYDAaDwWA4\nsBixajAYDAaDwWA4sBixajAYDAaDwWA4sBixajAYDAaDwWA4sBixajAYDAaDwWA4sBixajAYDAaD\nwWA4sNjd7oDBYLg30FqjlAJACIEQovGzwWAwGAybYcSqwWDYdbTWACilUEqRJAlaa8IwbPyvjpQS\npRS2bSOlbHzVBW3zFxhxazAYDPcaRqwaDIY7Rmvd+GoWp8VikVQqhW2vLzV1IVp/HUC1WsXzvA1/\n7yRM669v/r6ZuDXC1mAwGO5+jFg1GAw7plmcJkmCUqrFYloXiUopoigiCAKiKNpwTP1La00cx7cU\nne0W2/rvWutNhakRtwaDwXB3Y8SqwWC4Jc1W03ahCOvCM0kS4jgmiiLiOG6IUM/zSKVSjb/VBWrz\n+9bbqb9381dzG1uJzHYBXKdTnzfDiFuDwWA4WIhbLN63XtkNBsOho31Lvy4moXVrPkmShjCN4xgh\nBI7jYNs2tm1TKpXwfR/XdQEaPqvtIq9SqTRe16kvzX3azle9n7f6klI2jm1eC5vb3Ir296r/bFmW\nEbcGg8GwczouksayajAYNmzpt4vTusiqi9K6QLUsC9u28TyPTCbTEH/Nr71TdhpY1Sw06+OoW1Vv\n12rbyYLbyXIbRRFKqYY47zSWZnHbbsU14tZgMBg2YsSqwXAPshNx2mw5rYtT3/cb0ftb0S7q9oNm\n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\nWAKsmnPSNhdMqOekvZ2
"text/plain": [
"<matplotlib.figure.Figure at 0x112c58e50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"from mpl_toolkits.mplot3d import Axes3D\n",
"\n",
"x = np.linspace(-5, 5, 50)\n",
"y = np.linspace(-5, 5, 50)\n",
"X, Y = np.meshgrid(x, y)\n",
"R = np.sqrt(X**2 + Y**2)\n",
"Z = np.sin(R)\n",
2016-02-16 21:40:20 +01:00
"\n",
"figure = plt.figure(1, figsize = (12, 4))\n",
"subplot3d = plt.subplot(111, projection='3d')\n",
"surface = subplot3d.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=matplotlib.cm.coolwarm, linewidth=0.1)\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Another way to display this same data is *via* a contour plot."
]
},
{
"cell_type": "code",
"execution_count": 31,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nwAXAxmQBSQsSn9cAMrO
"text/plain": [
"<matplotlib.figure.Figure at 0x1127ec8d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"plt.contourf(X, Y, Z, cmap=matplotlib.cm.coolwarm)\n",
"plt.colorbar()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Scatter plot"
2016-02-16 21:40:20 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To draw a scatter plot, simply provide the x and y coordinates of the points."
]
},
{
"cell_type": "code",
"execution_count": 32,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nMnfYPxzVQ0lgtEZxkiT
"text/plain": [
"<matplotlib.figure.Figure at 0x11389e1d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"from numpy.random import rand\n",
"x, y = rand(2, 100)\n",
"plt.scatter(x, y)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You may also optionally provide the scale of each point."
]
},
{
"cell_type": "code",
"execution_count": 33,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nbbsaf3rUMGA67drNZ8W
"text/plain": [
"<matplotlib.figure.Figure at 0x112639f50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x, y, scale = rand(3, 100)\n",
"scale = 500 * scale ** 5\n",
"plt.scatter(x, y, s=scale)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And as usual there are a number of other attributes you can set, such as the fill and edge colors and the alpha level."
]
},
{
"cell_type": "code",
"execution_count": 34,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": true
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nen+U6sIwlY4kOh2Ekha
"text/plain": [
"<matplotlib.figure.Figure at 0x11389e3d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"for color in ['red', 'green', 'blue']:\n",
" n = 100\n",
" x, y = rand(2, n)\n",
" scale = 500.0 * rand(n) ** 5\n",
" plt.scatter(x, y, s=scale, c=color, alpha=0.3, edgecolors='blue')\n",
"\n",
"plt.grid(True)\n",
"\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Lines\n",
"You can draw lines simply using the `plot` function, as we have done so far. However, it is often convenient to create a utility function that plots a (seemingly) infinite line across the graph, given a slope and an intercept. You can also use the `hlines` and `vlines` functions that plot horizontal and vertical line segments.\n",
"For example:"
2016-02-16 21:40:20 +01:00
]
},
{
"cell_type": "code",
"execution_count": 35,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nBIOrCAIYjfmpc++1iCn
"text/plain": [
"<matplotlib.figure.Figure at 0x112582ed0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"from numpy.random import randn\n",
"\n",
"def plot_line(axis, slope, intercept, **kargs):\n",
" xmin, xmax = axis.get_xlim()\n",
" plt.plot([xmin, xmax], [xmin*slope+intercept, xmax*slope+intercept], **kargs)\n",
"\n",
2016-02-16 21:40:20 +01:00
"x = randn(1000)\n",
"y = 0.5*x + 5 + randn(1000)*2\n",
2016-02-16 21:40:20 +01:00
"plt.axis([-2.5, 2.5, -5, 15])\n",
"plt.scatter(x, y, alpha=0.2)\n",
"plt.plot(1, 0, \"ro\")\n",
"plt.vlines(1, -5, 0, color=\"red\")\n",
"plt.hlines(0, -2.5, 1, color=\"red\")\n",
"plot_line(axis=plt.gca(), slope=0.5, intercept=5, color=\"magenta\")\n",
"plt.grid(True)\n",
2016-02-16 21:40:20 +01:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Histograms"
2016-02-16 21:40:20 +01:00
]
},
{
"cell_type": "code",
"execution_count": 36,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\ncrE+4OwkFwC7gSeAc4Y
"text/plain": [
"<matplotlib.figure.Figure at 0x112359190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"data = [1, 1.1, 1.8, 2, 2.1, 3.2, 3, 3, 3, 3]\n",
"plt.subplot(211)\n",
"plt.hist(data, bins = 10, rwidth=0.8)\n",
"\n",
"plt.subplot(212)\n",
"plt.hist(data, bins = [1, 1.5, 2, 2.5, 3], rwidth=0.95)\n",
"plt.xlabel(\"Value\")\n",
"plt.ylabel(\"Frequency\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 37,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false,
"scrolled": true
2016-02-16 21:40:20 +01:00
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nufDCC+nRo0eF9gmoOBV
"text/plain": [
"<matplotlib.figure.Figure at 0x1125b1050>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"data1 = np.random.randn(400)\n",
"data2 = np.random.randn(500) + 3\n",
"data3 = np.random.randn(450) + 6\n",
"data4a = np.random.randn(200) + 9\n",
"data4b = np.random.randn(100) + 10\n",
2016-02-16 21:40:20 +01:00
"\n",
"plt.hist(data1, bins=5, color='g', alpha=0.75, label='bar hist') # default histtype='bar'\n",
"plt.hist(data2, color='b', alpha=0.65, histtype='stepfilled', label='stepfilled hist')\n",
"plt.hist(data3, color='r', histtype='step', label='step hist')\n",
"plt.hist((data4a, data4b), color=('r','m'), alpha=0.55, histtype='barstacked', label=('barstacked a', 'barstacked b'))\n",
"\n",
"plt.xlabel(\"Value\")\n",
"plt.ylabel(\"Frequency\")\n",
"plt.legend()\n",
"plt.grid(True)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Images\n",
"Reading, generating and plotting images in matplotlib is quite straightforward.\n",
"\n",
"To read an image, just import the `matplotlib.image` module, and call its `imread` function, passing it the file name (or file object). This returns the image data, as a NumPy array. Let's try this with the `my_square_function.png` image we saved earlier."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(288, 432, 4) float32\n"
]
}
],
"source": [
"import matplotlib.image as mpimg\n",
"\n",
"img = mpimg.imread('my_square_function.png')\n",
"print(img.shape, img.dtype)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have loaded a 288x432 image. Each pixel is represented by a 4-element array: red, green, blue, and alpha levels, stored as 32-bit floats between 0 and 1. Now all we need to do is to call `imshow`:"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nHlRVVZGdnU1VVRWHDh2
"text/plain": [
"<matplotlib.figure.Figure at 0x112724890>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(img)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Tadaaa! You may want to hide the axes when you are displaying an image:"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "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\nOGPHQuXKZiefFDuJSMm
"text/plain": [
"<matplotlib.figure.Figure at 0x11449f850>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(img)\n",
"plt.axis('off')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's just as easy to generate your own image:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 0 1 2 ..., 97 98 99]\n",
" [ 100 101 102 ..., 197 198 199]\n",
" [ 200 201 202 ..., 297 298 299]\n",
" ..., \n",
" [9700 9701 9702 ..., 9797 9798 9799]\n",
" [9800 9801 9802 ..., 9897 9898 9899]\n",
" [9900 9901 9902 ..., 9997 9998 9999]]\n"
]
},
{
"data": {
"image/png": "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\nrIw/nPvUBaVYtLHVNU7
"text/plain": [
"<matplotlib.figure.Figure at 0x112359810>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"img = np.arange(100*100).reshape(100, 100)\n",
"print(img)\n",
"plt.imshow(img)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we did not provide RGB levels, the `imshow` function automatically maps values to a color gradient. By default, the color gradient goes from blue (for low values) to red (for high values), but you can select another color map. For example:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false,
"scrolled": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAP4AAAD/CAYAAADRymv0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFqFJREFUeJztnWuspdVZx3/P6UC54/iBmbQjUyoqtEYq3tDRcFIwJZLQ\nT44QbLgon2qK0JCZITHyxaSQNASjMaltSYuNQksqNGKkhG4vVRQQKikMYyRMATuHlNIx9Mbt8cPe\nh+458+593rX3Xu/7X2s/v2Rnzr6+/+dZ67/ue4+5O0EQLBcrfQsIgqB7wvhBsISE8YNgCQnjB8ES\nEsYPgiUkjB8ES8hcxjezi8xsv5kdMLM9ixIVBEFebNZ9fDNbAQ4AFwD/CzwMXOru+xcnLwiCHMzT\n4/8y8N/uftDdXwP+BvjgYmQFQZCTeYz/TuC5sfvPjx4LgkCcLbkvYGZxJjgIesLdrenxeYz/AnD6\n2P0do8eOYmXsQm+b86KLpjErwA+A47oUMgfGUO/xfQtpYFJ+Ab6PpuZxNur/HnBCH0I20JTX10a3\ndb4/5f3zePBh4Ewz2wl8E7gUuKzphcega6IVmpM43liVgKG3N2tjtyZKyzEMNb+tbxEjNuZ2C0c2\npFmM7+5vmNkfAPczzMen3P2ppteqF3BTxezbSNMM04RqjqfF0GeOU3K78X1Kxp/5vbm/lmtm/mPA\nsVmvsnhepT/Nm/WUTfwQeHseOdnoS3NqbscpKc8vkGeO35ouh/m24d9Z6bv3TNXfxVx5Ubldp88c\nzxpD7vn9onK7GZ3kvuuh0Twtugqq+mvILejGEMafA9XKqagpFdXcgq6uFML4M6Ja+MqGSUE1hhry\n26X+Tozf93xZBbXtNijfLOuoGl9RE3TkyXkr/KIXlfpEMQZV06SiGoOiriKG+jUZX41Ztg6D9qjm\ntgjjg2byammQVPWrmiYVxRiKMb4i0VvmI3KbFwnjl1y4JVROdX2TiNzmI4w/ByXoLsE8k1DXXXJu\nw/gTUNQ0C6qVU1FTKqq5hc11xT7+FJQLtmRi/p6XNrmV6PFVicqZjzB/PtrkNIw/BdVKWYthFGOo\nJbebEcYvjOgp8zLpF5lqY+mMX0OhKsYQh5nysujGvoiz+osiesp8xEgkHzlyu3Sr+qoVU1VXCsrG\nV9XVljB+pSibpnQMnVGnClUM9WswjGoMqrpSUG1U+9RUvPFVC7UGYt6ej75zW/yqflTMfPRdOWum\n79zGHD8TtRhGPYbS81y18ZX28bui9ApZAn33miUjPccvvVDVtavra4NqDOp1V7rHjxY9L5HbfKhv\nIRZhfEVUdaWiGIeiplSU6y7E4t5MqBdqycQorxs6n+PXUKC1fCFFEWXTq+qahU6NH615XqJBykdt\ndbfTOX5tyVMjcpuP2upuL3N8xeTVVKiKcShqSkU1hlnqbizujajJ+Gqo51ZZWxtkjV/CyT3Vwo95\nez7UG6S2zBJD9PjihPHzUdu8PYVNPWlmO4DPAtuAN4G/dPc/NbOtwJ3ATuBZYLe7H276jL5OMNVQ\noKoxqOpKQblRza2pTWf8OnC9uz9uZicBj5rZ/cBVwAPufouZ7QH2AXubPqAv4y/LL6b2wbL2lF3Q\nxUhkU+O7+yHg0OjvV8zsKWAH8EHg/NHLPgMMmGD8Pub4yq35OsraNiOMn48ucps0/TazdwHvAx4C\ntrn7GgwbBzM7bSEXWTDKlTPMk48SGv7N6LXHf0vEcJj/BeDaUc/vG16y8f5b3D/295nATyVJnKJp\nQZ/TJ2H+PKgbP4euA6NbG1oZ38y2MDT9He5+z+jhNTPb5u5rZrYdeHHS+y9uKSaFGgyjql9VVwrK\nMeSqu2ePbuv83ZTXtu3xPw086e63jT12L3AlcDNwBXBPw/uAPHN8ZeOr6kpBNQZVXSko1N0223m7\ngMuBJ8zsMYZD+hsZGv4uM7saOAjsnvQZuYyvhvrwsi3K+pW1tUFFf5tV/a8y2bsXLuQiFaH+yyul\no9Bb1oDUb+6VXqDKPb6iplRUY1DVNQ0Z4y/z8ckuiMNM+Six3kqd1VdMnnIvnopiDIqaUikxBrlv\n5ykmscQWvQnVGFR1pVBaDFI9virKxlfVlYJqDKq6FoFcj6+IagVQbpBSUI1BVdciWFrj11CoqsZX\n1JTKxhg23neh52YhjF8oyouOippSUY9hXn0y23ldEluHeYlDTN0wTx1e2sU9ddOX3jCpa1fX14Z5\nYljaob4yMSLJS+S2h/9JZ5ycCx2lF+ykObzColLpuQXdGLrSVWWPX0OLrqq/htyCbgxh/DlQrZyK\nmlJRzS3o6kohjD8jqoWvbJgUVGOoIb9d6l/aVf0+UNziKt0s66gaX1ETFLKPH4tKeVE1TSqqMSjq\nKmKoX5Px1Yitw7yo5rYI44Nm8mppkFT1q5omFcUYijG+ItFb5iNym5dejV9DoSpXTlVdbYnc5iOM\nPwfK+hV3EFJRza9yg9SW3oyvmjhVXamoV05lbZuhnlvYXF/s42+glgU7ZWL+npc2uY3FvQ2E8bsh\nzJ+PNjkN4zegXhlrMYxiDLXkdjPC+IURPWVeluU/Hlk649dQqIox1DJFUtW/6Ma+iLP6iyJ6ynzE\nSCQfOXK7dKv6qhVTVVcKYfx8hPErJUyTEVvS3PrkpzrxZNakV1Ci0qaXFZaAqvFzi3p98lPdzPFz\nBijtmsKpZcVOkS4WRfo2vuVc3YtVpbxEbvPQc73tZvqd+yqqFVNVVwqqMdTSIKkb38xWgEeA5939\nEjPbCtwJ7ASeBXa7++HGNytt5HdFLRVTkRjlzY25T1n6G3+h2XXALwCnjIx/M/CSu99iZnuAre6+\nt+F97ielqqKOQlWNQVVXCooxiK2J2Evg7o1qWhnfzHYAtwN/Alw/Mv5+4Hx3XzOz7cDA3c9qeK/7\nqamKqcf8ikRu82HInFiztcnGbzvUvxW4ARi38DZ3XwNw90NmdtrEd6cO9UuomOr6JlGC7hI0TqKE\nuksL45vZxcCauz9uZqtTXjp56FDbCZ4YkeQlcpudNpbcBVxiZr8FHA+cbGZ3AIfMbNvYUP/FSR9w\n03d/9Pfq24e3olGumKq6UlCNQVXXiMEPhrc2tF7cAzCz84GPjub4tzBc3Lt508W9d6zfQds0pRO5\nzUeBddeemX+O38THgLvM7GrgILB74ivX5/gFJq8oIrf5qKzuJvX4M13AzP2MjQ9mveRsVFSoknEo\nakpFNYYJddeeytPjt6eExT114ytra4OyfmVtbZih7nZjyRJO7qkWvnqD1BbVGFR1pTBDDNHjq1PZ\n3FKOJc1tN5bs6yRTDQWqXDFVdaWgGkNmXXUbf1l+MrUPlBuk0ulglFfvHF/sCxNHoKgpFeX8lk4H\njWr9c3zFihm9ZT5qym30+BsovWDVK6eytjaUoL9njeXN8dVN0wZV/TXkFvRjENBXXo9fQuVU1zeJ\nEnILZWichoD+sowvkLCplL7gpa679PwKUf/iXtcI/QJLlZQyKhFHa45feoEq90iKmlJRjUFV1xR0\njB9HU/MSh5nyUWC91RrqKyZPuRdPRTGGyG8v6C3uKSavwBa9EcUYasltYWj1+KooV05VXW1Rzm3F\n6PX4iqhWzBpMo6q/pilIA8tr/BoKVNX4ippmQTGOBWkK45eKco+kqCkV1RiKMr7agZbYOsxLHGLK\nx4Lq7fIu7qmavpYGSTEG5VFSKnPGsLxDfUViJJKXOMT0FnUZv4ZC3RjDxvsu8FypeW7Sr5DPHgjj\nq6EeQ+kjEnXtHekL43eJur42KBtfVVcKYfzKUDZMCqox1JDfDvWH8btEcYurdLOso2p8RU2Uso9f\n+qLSOIoxqJomFdUYBPNbRo8vmLhqiC3EvIgeZirrAI9q5VTV1RZV/bU0SIIxlNHjq1JLxVQkRiJZ\nCePPg/rag6qutigbX1VXS/pb3FM3TekIziuTUa0byg1SS/rr8VUTp6orFdXKqagpFdXcQmtdZS3u\ndUGMRPIR8/a8JOS2lSX
"text/plain": [
"<matplotlib.figure.Figure at 0x1148f0d50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(img, cmap=\"hot\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also generate an RGB image directly:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false,
"scrolled": true
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW0AAAD7CAYAAAChScXIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADQFJREFUeJzt3FGIpXd9xvHvsyxCoxCCdDeQqK3IbqFQFqW5SS9WtCYU\nQsSLNs2NeiG5aNpeanuzmzvTi1BBFNFtSItBbCFNNhcai4QSSutSm8a0cVdoE43NTkJJRWkvQvLr\nxZwkZ3dndmbnnDNnfu//+4HDnvPOmTn/N8/MM+//NzNJVSFJ6uHQuhcgSdo9S1uSGrG0JakRS1uS\nGrG0JakRS1uSGjm86hdI4u8UStIeVFUuP7ZQaSe5HfhzNq/Yz1TV/Vs/8ytbHDsL3LHIyx9g/c7t\n0KFw9OgvXXI7cmT+8XVv3f/yl+/nvvvuW/eSV+b06dOcPn163cu4Jm+8/jr/t7Fx6e3ll9+6/79z\nx7+5sdHss/Pa9Pvq29o92xzf83gkySHgi8BtwK8Dv5/k1/b68SRJO1tkpn0L8KOqeqGqXgO+Ady5\nnGVpv+WKTZikg2iR0r4J+Mnc4xdnx3bp2AIvfdD1O7dr+b8ZnDx5cmXrOAimfn79PjuvzdTPb+U/\niNx0du7+MeD47DZVUz636Zfa1M9v2p+dfc/vPHBhF89bpLR/Crx37vHNs2NbmMKPBabN8chAkmvb\nWmlfXH4p+/g2z1tkPHIO+ECS9yV5B3AX8NgCH09r5NfwQAy7tT1faVfV60nuBZ7g7V/5e25pK5Mk\nXWGhmXZVfYu+IyRJasc/YxfgTHsoht2apS3AMedQDLs1S1uSGrG0BbhjHopht2ZpC3DHPBTDbs3S\nlqRGLG1JasTSFuCYcyiG3ZqlLcAx51AMuzVLW5IasbQFuGMeimG3ZmkLcMc8FMNuzdKWpEYsbUlq\nxNIW4JhzKIbdmqUtwDHnUAy7NUtbkhqxtAW4Yx6KYbdmaQtwxzwUw27N0pakRixtSWrE0hbgmHMo\nht2apS3AMedQDLs1S1uSGrG0BbhjHopht2ZpC3DHPBTDbs3SlqRGLG1JasTSFuCYcyiG3ZqlLcAx\n51AMuzVLW5IasbQFuGMeimG3ZmkLcMc8FMNuzdKWpEYsbUlqxNIW4JhzKIbdmqUtwDHnUAy7NUtb\nkhqxtAW4Yx6KYbdmaQtwxzwUw27N0pakRixtSWrE0hbgmHMoht2apS3AMedQDLs1S1uSGrG0Bbhj\nHopht2ZpC3DHPBTDbu3wIu+c5HngZ8AbwGtVdcsyFiVJ2tpCpc1mWZ+sqleXsRhJ0tUtOh7JEj6G\nDgDHnAMx7NYWLdwCvpPkXJLPLGNBWg/HnAMx7NYWHY/cWlUvJfllNsv7uap66sqnnZ27fww4vuDL\nStK0nAcu7OJ5C5V2Vb00+/eVJI8AtwBblPYdi7yM9oE75oEkXm0fQMe59HL28W2et+fxSJLrkrxr\ndv+dwMeAZ/f68bRefg0PxLBbW+RK+yjwSJKafZyvV9UTy1mWJGkrey7tqvpP4MQS1yJJ2oG/rifA\nmfZQDLs1S1uAY86hGHZrlrYkNWJpC3DHPBTDbs3SFuCOeSiG3ZqlLUmNWNqS1IilLcAx51AMuzVL\nW4BjzqEYdmuWtiQ1YmkLcMc8FMNuzdIW4I55KIbdmqUtSY1Y2pLUiKUtwDHnUAy7NUtbgGPOoRh2\na5a2JDViaQtwxzwUw27N0hbgjnkoht2apS1JjVjaktSIpS3AMedQDLs1S1uAY86hGHZrlrYkNWJp\nC3DHPBTDbs3SFuCOeSiG3ZqlLUmNWNqS1IilLcAx51AMuzVLW4BjzqEYdmuWtiQ1YmkLcMc8FMNu\nzdIW4I55KIbdmqUtSY1Y2pLUiKUtwDHnUAy7NUtbgGPOoRh2a5a2JDViaQtwxzwUw27N0hbgjnko\nht2apS1JjVjaktSIpS3AMedQDLs1S1uAY86hGHZrlrYkNWJpC3DHPBTDbm3H0k5yJslGkmfmjt2Q\n5Ikk55N8O8n1q12mVs0d80AMu7XdXGk/CNx22bHPAX9XVceB7wJ/suyFSZKutGNpV9VTwKuXHb4T\neGh2/yHg40telyRpC3udaR+pqg2AqroIHFnekrQOjjkHYtitLesHkQ7JmnPMORDDbu3wHt9vI8nR\nqtpIciPw8tWffnbu/jHg+B5fVpKm6TxwYRfP221pZ3Z702PAp4D7gU8Cj1793e/Y5ctoXdwxDyTx\navsAOs6ll7OPb/O83fzK38PAPwDHkvw4yaeBzwO/neQ88JHZYzXm1/BADLu1Ha+0q+rubd700SWv\nRZK0A/8iUpIasbQFONMeimG3ZmkLcMw5FMNuzdKWpEYsbQHumIdi2K1Z2gLcMQ/FsFuztCWpEUtb\nkhqxtAU45hyKYbdmaQtwzDkUw27N0pakRixtAe6Yh2LYrVnaAtwxD8WwW7O0JakRS1uSGrG0BTjm\nHIpht2ZpC3DMORTDbs3SlqRGLG0B7piHYtitWdoC3DEPxbBbs7QlqRFLW5IasbQFOOYcimG3ZmkL\ncMw5FMNuzdKWpEYsbQHumIdi2K1Z2gLcMQ/FsFuztCWpEUtbkhqxtAU45hyKYbdmaQtwzDkUw27N\n0pakRixtAe6Yh2LYrVnaAtwxD8WwW7O0JakRS1uSGrG0BTjmHIpht2ZpC3DMORTDbs3SlqRGLG0B\n7piHYtitWdoC3DEPxbBbs7QlqRFLW5IasbQFOOYcimG3ZmkLcMw5FMNuzdKWpEYsbQHumIdi2K3t\nWNpJziTZSPLM3LFTSV5M8v3Z7fbVLlOr5o55IIbd2m6utB8Ebtvi+ANV9cHZ7VtLXpckaQs7lnZV\nPQW8usWb3GNJ0j5bZKZ9b5Knk3wtyfVLW5HWwjHnQAy7tb2W9peA91fVCeAi8MDylqR1cMw5EMNu\n7fBe3qmqXpl7+FXg7NXfY/7Nx4Dje3lZSZqs88CFXTxvt6Ud5mbYSW6sqouzh58Anr36u9+xy5fR\nurhjHkji1fYBdJxLL2cf3+Z5O5Z2koeBk8C7k/wYOAV8OMkJ4A3geeCeRRar9fNreCCG3dqOpV1V\nd29x+MEVrEWStAP/IlKSGrG0BTjTHopht2ZpC3DMORTDbs3SlqRGLG0B7piHYtitWdoC3DEPxbBb\ns7QlqRFLW5IasbQFOOYcimG3ZmkLcMw5FMNuzdKWpEYsbQHumIdi2K1Z2gLcMQ/FsFuztCWpEUtb\nkhqxtAU45hyKYbdmaQtwzDkUw27N0pakRixtAe6Yh2LYrVnaAtwxD8WwW7O0JakRS1uSGrG0BTjm\nHIpht2ZpC3DMORTDbs3SlqRGLG0B7piHYtitWdoC3DEPxbBbs7QlqRFLW5IasbQFOOYcimG3ZmkL\ncMw5FMNuzdKWpEYsbQHumIdi2K1Z2gLcMQ/FsFuztCWpEUtbkhqxtAU45hyKYbdmaQtwzDkUw27N\n0pakRixtAe6Yh2LYrVnaAtwxD8WwW7O0JamRNZb2+fW99MpN+dzgySefXPcSVmrq5zftz87pn98a\nS/vC+l565fqd27WMOadealM/v36fnddm6ufneESAY06pC0tbkhpJrfgSK4nXcJK0B1V1xeBy5aUt\nSVoexyOS1IilLUmN7HtpJ7k9yQ+TXEjy2f1+/VVL8nySf03yL0m+t+71LCrJmSQbSZ6ZO3ZDkieS\nnE/y7STXr3ONi9jm/E4leTHJ92e329e5xr1KcnOS7yb5tyQ/SPJHs+OTyG+L8/vD2fFJ5LedfZ1p\nJznE5q9RfgT4L+AccFdV/XDfFrFiSf4D+FBVvbrutSxDkt8CfgH8ZVX9xuzY/cB/V9Wfzb7x3lBV\nn1vnOvdqm/M7Bfy8qh5Y6+IWlORG4MaqejrJu4B/Bu4EPs0E8rvK+f0eE8hvO/t9pX0L8KOqeqGq\nXgO+weZ/5CkJExo7VdVTwOXfgO4EHprdfwj4+L4uaom2OT/YzLG1qrpYVU/P7v8CeA64mYnkt835\n3TR7c/v8trPf5XIT8JO
"text/plain": [
"<matplotlib.figure.Figure at 0x1148e1650>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"img = np.empty((20,30,3))\n",
"img[:, :10] = [0, 0, 0.6]\n",
"img[:, 10:20] = [1, 1, 1]\n",
"img[:, 20:] = [0.6, 0, 0]\n",
"plt.imshow(img)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since the `img` array is just quite small (20x30), when the `imshow` function displays it, it grows the image to the figure's size. By default it uses [bilinear interpolation](https://en.wikipedia.org/wiki/Bilinear_interpolation) to fill the added pixels. This is why the edges look blurry.\n",
"You can select another interpolation algorithm, such as copying the color of the nearest pixel:"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false,
"scrolled": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW0AAAD7CAYAAAChScXIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACjpJREFUeJzt20GopfdZx/HfE4Yu2kIIxSSQ2GopM4IgQ8Vs4mJKtQlC\nSOlCYzZtFzULoy6tbjLLxkWwIAVtY4jSUFSIyWTRplKCBNEO1phG05mCJm1qMg0Sxe6CeVzcE3Mz\nc+/cyz3n3pvn7ecDlznnve857/8/75nvfed/zq3uDgAzXHPcAwBg/0QbYBDRBhhEtAEGEW2AQUQb\nYJATh32AqvKZQoAD6O66fNta0a6q25P8Ybau2B/s7vt33vOPd9h2Lskd6xz+HWw5c+v+jSu2nT17\nNmfPnj36wRyRJc3vT+qKf/MLenXubCnzu2eX7QdeHqmqa5L8UZLbkvxskl+vqp856PMBsLd11rRv\nSfLd7n6xu19P8pUkd25mWADsZJ1o35Tk+9vuv7Tatk8n1zj0O92S55acOXPmuIdwqJY+v2W/Opc/\nv0N/I3LLuW23TyY5tfpaqiXPbflRW/r8lv3qnDu/C0ku7mO/daL9gyTv33b/5tW2HSzhbQGAw3P5\npewTu+y3zvLI+SQfqqoPVNW7ktyV5PE1ng+APRz4Sru7/7eq7k3yZN76yN/zGxsZAFdYa027u7+a\nuUtIAOP4NXaAQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQb\nYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2A\nQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEG\nEW2AQUQbYBDRBhjkxDoPrqoXkvx3kjeSvN7dt2xiUADsbK1oZyvWZ7r7tU0MBoCrW3d5pDbwHADs\n07rB7SRfr6rzVfWZTQwIgN2tuzxya3e/XFU/ka14P9/dT1+527ltt08mObXmYQGW5UKSi/vYb61o\nd/fLqz9frapHk9ySZIdo37HOYQAW71Tefjn7xC77HXh5pKreXVXvXd1+T5KPJXnuoM8HwN7WudK+\nIcmjVdWr5/lydz+5mWEBsJMDR7u7/z3J6Q2OBYA9+LgewCCiDTCIaAMMItoAg4g2wCCiDTCIaAMM\nItoAg4g2wCCiDTCIaAMMItoAg4g2wCCiDTCIaAMMItoAg4g2wCCiDTCIaAMMItoAg4g2wCCiDTCI\naAMMItoAg4g2wCCiDTCIaAMMItoAg4g2wCCiDTCIaAMMItoAg4g2wCCiDTCIaAMMItoAg4g2wCCi\nDTCIaAMMItoAg4g2wCCiDTCIaAMMItoAg4g2wCCiDTDIntGuqger6lJVPbtt23VV9WRVXaiqr1XV\ntYc7TACS/V1pP5Tktsu2fTbJ33T3qSTfSPJ7mx4YAFfaM9rd/XSS1y7bfGeSh1e3H07y8Q2PC4Ad\nHHRN+/ruvpQk3f1Kkus3NyQAdrOpNyJ7Q88DwFWcOODjLlXVDd19qapuTPLDq+9+btvtk0lOHfCw\nAMt0IcnFfey332jX6utNjyf5VJL7k3wyyWNXf/gd+zwMwI+nU3n75ewTu+y3n4/8PZLk75KcrKrv\nVdWnk3wuyS9X1YUkH13dB+CQ7Xml3d137/KtX9rwWADYg9+IBBhEtAEGEW2AQUQbYBDRBhhEtAEG\nEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhE\ntAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDR\nBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQUQbYBDRBhhEtAEGEW2AQfaMdlU9WFWXqurZbdvuq6qX\nqupbq6/bD3eYACT7u9J+KMltO2x/oLs/vPr66obHBcAO9ox2dz+d5LUdvlWbHw4AV7POmva9VfVM\nVX2pqq7d2IgA2NVBo/2FJB/s7tNJXknywOaGBMBuThzkQd396ra7X0xy7uqP2P7tk0lOHeSwAIt1\nIcnFfey332hXtq1hV9WN3f3K6u4nkjx39Yffsc/DAPx4OpW3X84+sct+e0a7qh5JcibJ+6rqe0nu\nS/KRqjqd5I0kLyS5Z53BArA/e0a7u+/eYfNDhzAWAPbgNyIBBhFtgEFEG2AQ0QYYRLQBBhFtgEFE\nG2AQ0QYYRLQBBhFtgEFEG2AQ0QYYRLQBBhFtgEFEG2AQ0QYYRLQBBhFtgEFEG2AQ0QYYRLQBBhFt\ngEFEG2AQ0QYYRLQBBhFtgEFEG2AQ0QYYRLQBBhFtgEFEG2AQ0QYYRLQBBhFtgEFEG2AQ0QYYRLQB\nBhFtgEFEG2AQ0QYYRLQBBhFtgEGOMdoXju/Qh27Jc0ueeuqp4x7CoVr6/Jb96lz+/I4x2heP79CH\nbslzW37Ulj6/Zb86lz8/yyMAg4g2wCDV3Yd7gKrDPQDAQnV3Xb7t0KMNwOZYHgEYRLQBBjnyaFfV\n7VX1naq6WFW/e9THP2xV9UJV/XNV/VNVffO4x7Ouqnqwqi5V1bPbtl1XVU9W1YWq+lpVXXucY1zH\nLvO7r6peqqpvrb5uP84xHlRV3VxV36iqf6mqb1fVb6+2L+L87TC/31ptX8T5282RrmlX1TXZ+hjl\nR5P8R5LzSe7q7u8c2SAOWVX9W5Kf7+7Xjnssm1BVv5jkR0n+rLt/brXt/iT/2d1/sPrBe113f/Y4\nx3lQu8zvviT/090PHOvg1lRVNya5sbufqar3JvnHJHcm+XQWcP6uMr9fywLO326O+kr7liTf7e4X\nu/v1JF/J1l/yklQWtOzU3U8nufwH0J1JHl7dfjjJx490UBu0y/ySrfM4Wne/0t3PrG7/KMnzSW7O\nQs7fLvO7afXt8edvN0cdl5uSfH/b/Zfy1l/yUnSSr1fV+ar6zHEP5pBc392Xkq1/OEmuP+bxHIZ7\nq+qZqvrS1OWD7arqp5KcTvL3SW5Y2vnbNr9/WG1a1PnbbjFXhO8gt3b3h5P8SpLfXP33e+mW9rnR\nLyT5YHefTvJKktH/zV4tHfxVkt9ZXZFefr5Gn78d5reo83e5o472D5K8f9v9m1fbFqO7X179+WqS\nR7O1JLQ0l6rqhuT/1xV/eMzj2ajufrXferPni0l+4TjHs46qOpGtoP15dz+22ryY87fT/JZ0/nZy\n1NE+n+RDVfWBqnpXkruSPH7EYzg0VfXu1U/9VNV7knwsyXPHO6qNqLx9jfDxJJ9a3f5kkscuf8Aw\nb5vfKmRv+kRmn8M/TfKv3f35bduWdP6umN/Czt8Vjvw3Ilcfv/l8tn5gPNjdnzvSARyiqvrpbF1d\nd5ITSb48fX5V9UiSM0nel+RSkvuS/HWSv0zyk0leTPKr3f1fxzXGdewyv49ka330jSQvJLnnzTXg\nSarq1iR/m+Tb2XpNdpLfT/LNJH+R4efvKvO7Ows4f7vxa+wAg3gjEmAQ0QYYRLQBBhFtgEFEG2AQ\n0QYYRLQBBhFtgEH+DzauLdnV5hW0AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1144a6a10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(img, interpolation=\"nearest\")\n",
"plt.show()"
]
},
2016-02-16 21:40:20 +01:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Animations\n",
2016-02-16 21:40:20 +01:00
"Although matplotlib is mostly used to generate images, it is also capable of displaying animations, depending on the Backend you use. In a Jupyter notebook, we need to use the `nbagg` backend to use interactive matplotlib features, including animations. We also need to import `matplotlib.animation`."
]
},
{
"cell_type": "code",
"execution_count": 45,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib nbagg\n",
"import matplotlib.animation as animation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this example, we start by creating data points, then we create an empty plot, we define the update function that will be called at every iteration of the animation, and finally we add an animation to the plot by creating a `FuncAnimation` instance.\n",
"\n",
"The `FuncAnimation` constructor takes a figure, an update function and optional arguments. We specify that we want a 100-frame long animation, with 20ms between each frame. At each iteration, `FuncAnimation` calls our update function and passes it the frame number `num` (from 0 to 99 in our case) followed by the extra arguments that we specified with `fargs`.\n",
"\n",
"Our update function simply sets the line data to be the first `num` data points (so the data gets drawn gradually), and just for fun we also add a small random number to each data point so that the line appears to wiggle."
]
},
{
"cell_type": "code",
"execution_count": 46,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
2016-03-03 18:29:41 +01:00
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support.' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" this.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width);\n",
" canvas.attr('height', height);\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option)\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'];\n",
" var y0 = fig.canvas.height - msg['y0'];\n",
" var x1 = msg['x1'];\n",
" var y1 = fig.canvas.height - msg['y1'];\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x;\n",
" var y = canvas_pos.y;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2016-02-16 21:40:20 +01:00
"source": [
"x = np.linspace(-1, 1, 100)\n",
"y = np.sin(x**2*25)\n",
"data = np.array([x, y])\n",
2016-02-16 21:40:20 +01:00
"\n",
"fig = plt.figure()\n",
"line, = plt.plot([], [], \"r-\") # start with an empty plot\n",
"plt.axis([-1.1, 1.1, -1.1, 1.1])\n",
"plt.plot([-0.5, 0.5], [0, 0], \"b-\", [0, 0], [-0.5, 0.5], \"b-\", 0, 0, \"ro\")\n",
"plt.grid(True)\n",
"plt.title(\"Marvelous animation\")\n",
"\n",
"# this function will be called at every iteration\n",
"def update_line(num, data, line):\n",
" line.set_data(data[..., :num] + np.random.rand(2, num) / 25) # we only plot the first `num` data points.\n",
2016-02-16 21:40:20 +01:00
" return line,\n",
"\n",
"line_ani = animation.FuncAnimation(fig, update_line, frames=100, fargs=(data, line), interval=67)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# Saving animations to video files\n",
2016-02-16 21:40:20 +01:00
"Matplotlib relies on 3rd-party libraries to write videos such as [FFMPEG](https://www.ffmpeg.org/) or `mencoder`. In this example we will be using FFMPEG so be sure to install it first."
]
},
{
"cell_type": "code",
"execution_count": 47,
2016-02-16 21:40:20 +01:00
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"Writer = animation.writers['ffmpeg']\n",
"writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)\n",
"line_ani.save('my_wiggly_animation.mp4', writer=writer)"
2016-02-16 21:40:20 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-03-03 18:29:41 +01:00
"# What next?\n",
2016-02-16 21:40:20 +01:00
"Now you know all the basics of matplotlib, but there are many more options available. The best way to learn more, is to visit the [gallery](http://matplotlib.org/gallery.html), look at the images, choose a plot that you are interested in, then just copy the code in a Jupyter notebook and play around with it."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
2016-02-16 21:40:20 +01:00
"language": "python",
"name": "python2"
2016-02-16 21:40:20 +01:00
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
2016-02-16 21:40:20 +01:00
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
2016-03-03 18:29:41 +01:00
},
"toc": {
"toc_cell": true,
"toc_number_sections": true,
"toc_section_display": "block",
"toc_threshold": 6,
"toc_window_display": false
2016-02-16 21:40:20 +01:00
}
},
"nbformat": 4,
"nbformat_minor": 0
}