{ "metadata": { "name": "", "signature": "sha256:b07e6d323e59381dad2441af2b5741fdcca25a61a0293859319f979b3f56c665" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Animations with Python" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "by Idalia Machuca and Nancy Soontiens" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Learning Goals" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* generate and save simple animations using the IPython Notebook\n", "* animate data from a file\n", "* animate three-dimensional images" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Set up" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to save these movies, we will need a library for writing videas. I've been using ffmpeg which can be downloaded here: http://www.ffmpeg.org/download.html. Download the package approriate for your system (windows, Mac, etc).\n", "\n", "You will have to add the ffmpeg executable to your path. \n", "1. Windows users can follow these instructions: http://www.wikihow.com/Install-FFmpeg-on-Windows\n", "2. MAC users can use the terminal:\n", "\n", "export PATH = 'path to where I extracted the FFMPEG download':$PATH\n", "\n", "Actually, Windows users can also the above line in their Git-Bash window too.\n", "\n", "You can test if you've done this correctly by typing ffmpeg in your terminal. If you get an error like \"ffmpeg executable not found\" then you haven't set things up correctly. Feel free to ask for help.\n", "\n", "For those of you working on \"Waterhole\" machines, ffmpeg has already been installed." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Resources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many examples of using Python to generate movies available on the internet with a quick Google search. We have found these pages helpful:\n", "* http://matplotlib.org/examples/animation/index.html\n", "* http://matplotlib.org/api/animation_api.html" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "A simple animation" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Load tools and packages" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Like all of our notebooks, we will need a set of tools to help us generate awesome movies! Like usual, load in matplotlib.pyplot, numpy, but also matlplotlib.animation." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.animation as animation" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that we didn't use the %matlplotlib inline feature. This means our movies will pop up in a new window with the plt.show() command. We have done this because plots don't animate inline." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Make something to animate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will need some data in order to produce an animation! Later, we will talk about loading data from a file but for now we will generate a sine curve as a simple example." ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig = plt.figure()\n", "x = np.arange(0, 2*np.pi, 0.01)\n", "plt.plot(x, np.sin(x),'b')\n", "plt.axis([0,2*np.pi,-1,1])\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Animate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To animate the sine curve, we will need to create a function that will help us loop through frames. It will take one simple argument that we can think of as time." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def animate_sine(t):\n", " plt.plot(x,np.sin(x+t/10.0),'b') \n", " plt.axis([0,2*np.pi,-1,1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we can use methods from the animation package to generate the movie.\n", "\n", "Notes: we are passing the figure handle, our animate function and the number of frames we would like to be animated. The frame number is the argument that is passed to the animate_sine function." ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig=plt.figure()\n", "ani = animation.FuncAnimation(fig,animate_sine, frames=200)\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "But this isn't exactly what we were expecting! Each frame contains the plot from the previous frame. We can get around this by clearing the axis at the start of our animiate_sine function.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def animate_sine(t):\n", " plt.cla()\n", " plt.plot(x,np.sin(x+t/10.0),'b') \n", " plt.axis([0,2*np.pi,-1,1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "fig, ax = plt.subplots()\n", "ani = animation.FuncAnimation(fig,animate_sine, frames=200)\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Aside: A more \"Pythonic\" approach" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also overcome the duplicate plots using the \"blit\" attribute of the FuncAnimation function. This isn't as intuitive as clearing the frame, but is perhaps more \"Pythonic\" and takes advantage of the way the animation function was written. An example is provided below. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig,ax = plt.subplots()\n", "\n", "#An empty plot\n", "pl,=ax.plot([],[])\n", "ax.set_xlim([0,2*np.pi])\n", "ax.set_ylim([-1,1])\n", "\n", "#animate funcion\n", "def animate_sine(t):\n", " pl.set_data(x,np.sin(x+t/10.0)) \n", " return pl,\n", "\n", "#set a clear initial frame\n", "def init():\n", " pl.set_data([],[])\n", " return pl,\n", "\n", "#blit=True to remove instances from previous frames\n", "ani = animation.FuncAnimation(fig,animate_sine, frames=200, init_func=init, blit=True)\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Saving" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we would like to save the movie. This is where we need to use ffmepg. We will define a movie writer that uses the ffmpeg libraries to save movies. \n", "\n", "The fps argument specifies the number of frames per second. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig, ax = plt.subplots()\n", "ani = animation.FuncAnimation(fig,animate_sine, frames=200)\n", "\n", "mywriter = animation.FFMpegWriter(fps=50)\n", "\n", "ani.save('sine_wave.mp4', writer=mywriter)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many, many options to play experiment with. This is just a simple introduction. For example, additional arguments can be provided to the animate_sine() function during the call to FuncAnimation using the fargs argument.\n", "\n", "See the documentation for FuncAnimation\n", "http://matplotlib.org/api/animation_api.html" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Animation with data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we will load data from a file and animate it. Like last time, we will use the pandas package to read a text file. The text file we are using can be found at www.eos.ubc.ca/~nsoontie/traj.txt . Place this file in your current working directory. \n", "\n", "We will also switch to plotting inline. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "\n", "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we will take a closer look at the traj.txt. Remember that we can execuate shell commands in the notebook using the ! .\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "! cat traj.txt" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 -123.25558 48.61595 -86.96747 .00000\r\n", "1 -123.23922 48.59781 -28.42194 .10000\r\n", "1 -123.18216 48.36028 -11.73121 .20000\r\n", "1 -123.39746 48.30912 -7.30910 .30000\r\n", "1 -123.69411 48.27558 -15.48464 .40000\r\n", "1 -123.96874 48.35421 -23.59864 .50000\r\n", "1 -124.17054 48.41030 -16.37882 .60000\r\n", "1 -124.33354 48.47167 -9.71394 .70000\r\n", "1 -124.39400 48.50298 -7.74570 .80000\r\n", "1 -124.46454 48.51483 -21.74961 .90000\r\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This file contains a particle trajectory from an ocean model output.\n", "\n", "Each column lists the particle number, longitude, latitude, depth, and age. Use pandas to read this in. Since this file doesn't have a header, we can name the columns in the pandas read_csv command using the names argument." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Load the data" ] }, { "cell_type": "code", "collapsed": false, "input": [ "data=pd.read_csv('traj.txt',delimiter=' ',names=['num','lon','lat','depth','age'])\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Look at the data now." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print data" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " num lon lat depth age\n", "0 1 -123.25558 48.61595 -86.96747 0.0\n", "1 1 -123.23922 48.59781 -28.42194 0.1\n", "2 1 -123.18216 48.36028 -11.73121 0.2\n", "3 1 -123.39746 48.30912 -7.30910 0.3\n", "4 1 -123.69411 48.27558 -15.48464 0.4\n", "5 1 -123.96874 48.35421 -23.59864 0.5\n", "6 1 -124.17054 48.41030 -16.37882 0.6\n", "7 1 -124.33354 48.47167 -9.71394 0.7\n", "8 1 -124.39400 48.50298 -7.74570 0.8\n", "9 1 -124.46454 48.51483 -21.74961 0.9\n", "\n", "[10 rows x 5 columns]\n" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This data set contains the latitude,longitude and depth of a particle trajectory. There are 10 outputs for one single particle.\n", "\n", "Let's store the lat,lon and depth in variables so we can plot them." ] }, { "cell_type": "code", "collapsed": false, "input": [ "lon = data['lon']\n", "lat=data['lat']\n", "dep = data['depth']" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Plotting 2D" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can plot the horizontal positions of this particle. We will colour the initial position red so we have a sense of direction. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig =plt.figure()\n", "plt.scatter(lon,lat,color='blue')\n", "plt.scatter(lon[0],lat[0],color='red')\n", "\n", "plt.title('2D')\n", "plt.xlabel('Longitude')\n", "plt.ylabel('Latitude')\n", "\n", "plt.axis([-124.6,-123.0,48.25,48.65]) " ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "[-124.6, -123.0, 48.25, 48.65]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 15 }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Animate 2D" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the same strategy as earlier, we will plot this trajectory in an animation. This time our animate() function takes an argument \"p\", which correspsonds to each trajectory point. So, \"p\" will be passed as an index to the lon and lat variables. There are 10 outputs, so our animation will have 10 frames." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Empty map\n", "fig= plt.figure()\n", "\n", "plt.title('2D')\n", "plt.xlabel('Longitude')\n", "plt.ylabel('Latitude')\n", "\n", "plt.axis([-124.6,-123.0,48.25,48.65]) \n", "\n", "#Animated points\n", "def animate(p):\n", " plt.scatter(lon[p],lat[p],color='blue')\n", " \n", "\n", "#The animation function \n", "anim = animation.FuncAnimation(fig, animate, frames=10)\n", "\n", "#A line that makes it all work\n", "mywriter = animation.FFMpegWriter()\n", "\n", "#Save in current folder\n", "anim.save('Software-Carpentry2D.mp4',writer=mywriter)\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAZ0AAAEZCAYAAABM/vhsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X9UVXW+//HnUSzBX/RLRMiOaQyiosdEm286oYY6dW0l\ntpjpmkPxoxmz1lxE0byrhqRRinG44kxdublcSmtyaWUakiOlxynT8AeOjuV4r2FioFnKD0V+nv39\ng/EkAgHK3gfs9VjrrHXOPudzzvtj7fPi89n7fLbNMAwDERERC3TxdAEiIvLjodARERHLKHRERMQy\nCh0REbGMQkdERCyj0BEREcsodERExDIKHRETVFdXExsbi91up3fv3jgcDrZu3QqA0+mkS5cu9OrV\ni169enHnnXfyi1/8gn379nm4ahHzKXRETFBbW8uAAQP429/+RllZGS+//DJRUVF89dVXAAQEBFBe\nXk55eTl79uwhODiY8ePHs337dg9XLmIum1YkELHGiBEjSE5O5pZbbmHWrFkUFhY2eP65555jz549\n7N2710MViphPIx0RC5w5c4Zjx44xdOjQZl8zffp0Dhw4wKVLlyysTMRaCh0Rk9XU1DBz5kyefPJJ\ngoKCmn1d//79MQyDkpISC6sTsZZCR8RELpeLWbNm0b17d/70pz/94Gu//vprbDYbvr6+FlUnYj0v\nTxcgcqMyDIPY2FjOnj1LTk4OXbt2/cHXb9y4kXvvvRdvb2+LKhSxnkJHxCSzZ8/m6NGjfPjhh9x8\n881NvsYwDIqKinjjjTdYtWoV77//vsVVilhLoSNigq+++orMzEy6d+9Ov3793NszMzPp378/RUVF\n9OrVC8Mw6NOnD/fffz87d+5kzJgxHqxaxHymnzJdV1fH6NGjCQwM5P333ycvL49nn32WmpoavLy8\neO211wgLC2vUrqSkhLi4OI4cOYLNZmP16tWMHTuW5ORk3njjDe644w4Ali5dytSpU83sgoiItBPT\nRzrLly8nJCSE8vJyAJKSkkhJSWHKlCl88MEHJCUlsWPHjkbtfvvb3/LQQw/x9ttvU1tby8WLFwGw\n2WzMnTuXuXPnml26iIi0M1PPXjt16hQ5OTnExcVxeUDl7+9PaWkpUD+aCQgIaNSutLSUjz/+mJiY\nGAC8vLzo06eP+3n9nlVEpHMyNXQSEhJIS0ujS5fvPyY1NZXExEQGDBjA/PnzWbp0aaN2BQUF3HHH\nHTz11FOMGjWK+Ph4Kioq3M+vWLGCESNGEBsbq980iIh0IqaFTnZ2Nn379sXhcDQYmcTGxpKRkcHJ\nkydJT093j2auVFtby4EDB3jmmWc4cOAAPXr0IDU1Fag/I6igoICDBw/i7+9PYmKiWV0QEZH2Zpjk\n+eefNwIDAw273W7069fP8PHxMZ544gmjV69e7te4XC6jd+/ejdoWFxcbdrvd/fjjjz82Hn744Uav\nKygoMIYNG9bk548YMcIAdNNNN910a8Nt0KBB7ZAAzTNtpLNkyRIKCwspKChg3bp1TJw4kaysLAYP\nHszOnTsB2L59e5PLgvTr148777yTY8eOAfDhhx+616wqLi52v27jxo0MHz68yc//+9//jmEYHf72\nu9/9zuM13Ag1qk7V2dFvnaXO48ePt3ccNGDZ73RsNhtQ/zuFOXPmUFVVhbe3N5mZmQAUFRURHx/P\nli1bgPrjNjNnzqS6uppBgwaxevVqABYsWMDBgwex2WwMHDiQlStXWtUFERG5TpaEzgMPPMADDzwA\nwOjRo/nss88avaZ///7uwIH6ZeCbWuJ97dq15hUqIiKm0oKfHhYeHu7pElrUGWoE1dneVGf76ix1\nmu2GvYibzWbjBu2aiIhpzP7u1EhHREQso9ARERHLKHRERMQyCh0REbGMQkdERCyj0BEREcsodERE\nxDIKHRERsYxCR0RELKPQERFpo4ICOHIEXC5PV9L5WLbKtIhIZ1ddDcHB9aED0KsXHD0K/ft7tq7O\nRCMdEZFW+uUvvw8cgPJy+NnPPFdPZ6QFP0VEWikwEL7+uuG2bt3qR0A3Ci34KSLSQdx1V+Ntvr7W\n19GZKXRERFrpnXfg5pu/f9ylC7z7rufq6Yw0vSYi0gYXLsDrr8OlSxATUz/ldiMx+7tToSMiIm6d\n/phOXV0dDoeDadOmAZCXl8eYMWNwOByEhYWxd+/eJtuVlJTw2GOPMWTIEEJCQtizZw8A586dIyIi\ngqCgICZPnkxJSYnZXRARkXZieugsX76ckJAQbDYbAElJSaSkpJCfn8/ixYtJSkpqst1vf/tbHnro\nIb744gsOHTrEkCFDAEhNTSUiIoJjx44xadIkUlNTze6CiIi0E1ND59SpU+Tk5BAXF+cervn7+1Na\nWgrUj2YCAgIatSstLeXjjz8mJiYGAC8vL/r06QPA5s2biY6OBiA6Opr33nvPzC6IiLRIM/mtZ2ro\nJCQkkJaWRpcu339MamoqiYmJDBgwgPnz57N06dJG7QoKCrjjjjt46qmnGDVqFPHx8VRUVABw5swZ\n/Pz8APDz8+PMmTNmdkFEpFl//zvcfTd4ecHAgZCf7+mKOj7TQic7O5u+ffvicDgaHJSKjY0lIyOD\nkydPkp6e7h7NXKm2tpYDBw7wzDPPcODAAXr06NHkNJrNZnNP24mIWOniRZg4sX6FApcLTpyASZPq\nz26T5pm29tqnn37K5s2bycnJobKykrKyMmbNmkVeXh4ffvghAI899hhxcXGN2gYGBhIYGEhYWBgA\nM2bM4JVXXgHqRzenT5+mX79+FBcX07dv32ZrSE5Odt8PDw8nPDy8/TooIj9qR49CbW3DbXV18MUX\n8K+vrk7B6XTidDqt+0DDAk6n0/i3f/s3wzAMw+FwGE6n0zAMw/jwww+N0aNHN9lm/Pjxxj//+U/D\nMAzjd7/7nZGUlGQYhmHMnz/fSE1NNQzDMJYuXWosWLCgyfYWdU1EfqS++sowunc3jPojOvW37t0N\n48svPV3Z9TH7u9OyVaYvT4NlZmYyZ84cqqqq8Pb2JjMzE4CioiLi4+PZsmULACtWrGDmzJlUV1cz\naNAgVq9eDcDChQuJiopi1apV2O121q9fb1UXRETcBgyAZ56BlSvrRzxeXhAXV39sR5qnH4eKiFyH\nDz+Ezz+HIUMgIsLT1Vw/rUhwjRQ6IiJt1+lXJBAREblMoSMiIpZR6IiIiGUUOiIiYhmFjoiIWEah\nIyIillHoiIiIZRQ6IiJiGYWOiIhYRqEjIiKWUeiIiIhlFDoiImIZhY6IiFhGoSMiIpZR6IiIiGUU\nOiIiYhmFjoiIWEahIyIiljE9dOrq6nA4HEybNg2AvLw8xowZg8PhICwsjL179zbZzm63ExoaisPh\nYMyYMe7tycnJBAYG4nA4cDgcbN261ewuiIhIO/Ey+wOWL19OSEgI5eXlACQlJZGSksKUKVP44IMP\nSEpKYseOHY3a2Ww2nE4nt956a6Ptc+fOZe7cuWaXLiIi7czUkc6pU6fIyckhLi4OwzAA8Pf3p7S0\nFICSkhICAgKabX+5TWu3i4hIx2Zq6CQkJJCWlkaXLt9/TGpqKomJiQwYMID58+ezdOnSJtvabDYe\nfPBBRo8ezf/8z/80eG7FihWMGDGC2NhYSkpKzOyCiIi0I9Om17Kzs+nbty8OhwOn0+neHhsbS0ZG\nBtOnT2fDhg3ExMSQm5vbqP2uXbvw9/fn7NmzREREEBwczPjx45k9ezYvvvgiAC+88AKJiYmsWrWq\nyRqSk5Pd98PDwwkPD2/PLoqIdHpOp7PBd7TZbIZJc1WLFi0iKysLLy8vKisrKSsrIzIykk2bNlFW\nVgbUT5P5+vq6p9ua89JLL9GzZ08SExMbbD9x4gTTpk3j8OHDjdrYbDZNw4mItJHZ352mTa8tWbKE\nwsJCCgoKWLduHRMnTiQrK4vBgwezc+dOALZv305QUFCjthUVFe4TDy5evMi2bdsYPnw4AMXFxe7X\nbdy40b1dREQ6PtPPXrvMZrMBkJmZyZw5c6iqqsLb25vMzEwAioqKiI+PZ8uWLZw+fZrIyEgAamtr\nmTlzJpMnTwZgwYIFHDx4EJvNxsCBA1m5cqVVXRARketk2vSap2l6TUSk7Trt9JqIiMjVFDoiImIZ\nhY6IiFhGoSMiIpZR6IiIiGUUOiIiYhmFjoiIWEahIyIillHoiIiIZRQ6IiJiGYWOiIhYRqEjIiKW\nUehcp/37YcYM+PnP4Z13PF2NiEjHZtmlDW5Ehw7BAw/AxYv1j//2t/r7v/qVZ+sSEemoNNK5Dq+9\n9n3gAFRUwNKlnqtHRKSjU+hch6YuOaFL+IiINE+hcx3i48HH5/vHPj6QkOC5ekREOjpdOfQ6ffIJ\nJCfXT609/TQ8+aTpHykiYhqzvzsVOh5WVgY33QTdu3u6EhGRG+By1XV1dTgcDqZNmwZAXl4eY8aM\nweFwEBYWxt69e5tsZ7fbCQ0NxeFwMGbMGPf2c+fOERERQVBQEJMnT6akpMTsLpiitBTGj4fbboNe\nvWDePB0PEpEbn+mhs3z5ckJCQrDZbAAkJSWRkpJCfn4+ixcvJikpqcl2NpsNp9NJfn4+eXl57u2p\nqalERERw7NgxJk2aRGpqqtldMMXTT0NeHtTW1t/++7/hrbc8XZWIiLlMDZ1Tp06Rk5NDXFyce7jm\n7+9PaWkpACUlJQQEBDTbvqkh3ubNm4mOjgYgOjqa9957z4TKzbdrF1RXf//44kVwOj1WjoiIJUz9\ncWhCQgJpaWmUlZW5t6WmpjJu3DjmzZuHy+Vi9+7dTba12Ww8+OCDdO3alV//+tfEx8cDcObMGfz8\n/ADw8/PjzJkzZnbBNIGBUFT0/ZRa9+4waJBnaxIRMZtpoZOdnU3fvn1xOBw4r/gTPjY2loyMDKZP\nn86GDRuIiYkhNze3Uftdu3bh7+/P2bNniYiIIDg4mPHjxzd4jc1mc0/bNSU5Odl9Pzw8nPDw8Ovt\nVrt54436Yzp1dfXBM3AgPPecp6sSkR8bp9PZ4DvabKadvbZo0SKysrLw8vKisrKSsrIyIiMj2bRp\nk3vkYxgGvr6+7um25rz00kv06tWLuXPnEhwcjNPppF+/fhQXFzNhwgSOHj3auGOd4Oy1b76Bjz8G\nb2948MH6s9hERDyp0569tmTJEgoLCykoKGDdunVMnDiRrKwsBg8ezM6dOwHYvn07QUFBjdpWVFRQ\nXl4OwMWLF9m2bRvDhg0D4JFHHmHNmjUArFmzhkcffdSsLpiub9/6xUIfekiBIyI/DpYt+Hl5Giwz\nM5M5c+ZQVVWFt7c3mZmZABQVFREfH8+WLVs4ffo0kZGRANTW1jJz5kwmT54MwMKFC4mKimLVqlXY\n7XbWr19vVRdEROQ66cehIiLi1mmn10RERK6m0BEREcsodERExDIKHRERsYxCR0RELNNi6LhcLrKy\nsli8eDEAJ0+ebLAAp4iISGu1eMr0b37zG7p06cL27ds5evQo586dY/Lkyezbt8+qGq+JTpkWEWk7\ns787W/xx6GeffUZ+fj4OhwOAW2+9lZqaGtMKEhGRG1eLoXPTTTdRV1fnfnz27Fm6dNGhIE+orYU/\n/Qn27YMRI+C3v9XyOSLSubQYOs899xzTp0/nm2++YdGiRbz99tu8/PLLVtQmVzAMePRR2LEDKirg\n3Xdh61bIzQX9DSAinUWrlsH54osv+OijjwCYNGkSQ4YMMb2w63WjHdM5fhyGD4dLl77f1qMH7N5d\nv11EpD147JjOuXPn3Pf9/Px4/PHH3QWdO3eOW2+91bSipLHKSujateG2Ll3qt4uIdBbNjnTsdrs7\n8U6ePMktt9wCwPnz57nrrrsoKCiwtNC2utFGOrW1EBICJ05ATQ14eUFAABw9Wn/VURGR9uCxBT9P\nnDhBQUEBERERZGdn89133/Hdd9+xZcsWIiIiTCtImublVX/Bt5//HOx2mDwZPv1UgSMinUuLx3SG\nDRvGP/7xjxa3dTQ32khHRMQKHv+dTv/+/Xn55Zd54oknMAyDv/zlLwQEBJhWkIiI3LhaPNn2rbfe\n4ptvvmH69OlERkbyzTff8NZbb1lRm4iI3GB05VAREXHz+PTahAkTGm2z2Wxs377dlIJEROTG1WLo\npKWlue9XVlbyzjvv4OXVYjO3uro6Ro8eTWBgIO+//z55eXk8++yz1NTU4OXlxWuvvUZYWFir2gIk\nJyfzxhtvcMcddwCwdOlSpk6d2up6RETEc1pMj9GjRzd4PG7cuGZDoinLly8nJCSE8vJyAJKSkkhJ\nSWHKlCl88MEHJCUlsWPHjla1hfpR1ty5c5k7d26raxARkY6hxRMJzp075759++23bN26lbKysla9\n+alTp8jJySEuLs49R+jv709paSkAJSUlzZ4J11Tby3SsRkSkc2pxpDNq1ChsNlv9i728sNvtrFq1\nqlVvnpCQQFpaWoOQSk1NZdy4ccybNw+Xy8Xu3btb3fayFStWsHbtWkaPHs2yZcvw9fVtVT0iIuJZ\nLYbO0aNH6X7Vz94rW7HgV3Z2Nn379sXhcOB0Ot3bY2NjycjIYPr06WzYsIGYmBhyc3Nb1RZg9uzZ\nvPjiiwC88MILJCYmNhuCycnJ7vvh4eGEh4e3WLeIyI+J0+ls9D1rphZPmR41ahQHDhxocdvVFi1a\nRFZWFl5eXlRWVlJWVkZkZCSbNm1yj14Mw8DX19c93fZDbWfMmMHatWsbvO7EiRNMmzaNw4cPN+6Y\nTpkWEWkzj629VlxczP79+6moqODAgQPs37+fAwcO4HQ6qaioaPGNlyxZQmFhIQUFBaxbt46JEyeS\nlZXF4MGD2blzJwDbt28nKCioVW0vB05xcbH7dRs3bmS41vUXEek0mp1e++tf/8qaNWv4+uuvSUxM\ndG/v1asXS5YsafMHXT4ulJmZyZw5c6iqqsLb25vMzEwAioqKiI+PZ8uWLc22BViwYAEHDx7EZrMx\ncOBAVq5c2eZaRETEM1qcXnvnnXeYMWOGVfW0G02viYi0ndnfnc2GTlZWFrNmzWLZsmUNRhqGYbh/\nK9ORKXRERNrOY8vgXD5uU15e3iB0RERErlWL02uffPIJ48aNa3FbR6ORjohI23lseu0yh8NBfn5+\ng22tOWXa0xQ6IiJt57Hptd27d/Ppp59y9uxZ/vjHP7qLKC8vp66uzrSCRETkxtVs6FRXV7sD5soF\nN3v37s3bb79tSXEiInJjaXF67cSJE9jtdovKaT+aXhMRaTuPX8TNx8eHefPm8fnnn3Pp0iV3UbqI\nm4iItFWLlzaYOXMmwcHBfPnllyQnJ2O32xtdY0dERKQ1Wr3gZ2hoKIcOHQLqL+y2b98+Swq8Vppe\nExFpO49Pr910000A9OvXj+zsbPr378/58+dNK0hERG5cLYbOf/7nf1JSUsKyZct47rnnKCsrIz09\n3YraRETkBtPi9FpT0tPTSUhIMKOedqPpNRGRtvP4igRNufPOOyksLDSjnnaj0BERaTuPH9MRacoX\nX8CBA3DnnTB+PGhNWBFpDYWOtNmbb8Kvfw1du4LLBVFRsGqVgkdEWtbs9FrPnj2bvaRBRUVFh19/\nTdNr5qipgd69obLy+209esC2bfD//p/n6hKR9uGx6bULFy6Y9qHSeZWUwNX/P3btCl9/7Zl6RKRz\naXFFApEr3X57/e1KNTXgcHimHhHpXEwPnbq6OhwOB9OmTQMgLy+PMWPG4HA4CAsLY+/eva1uC3Du\n3DkiIiIICgpi8uTJlJSUmN0FuYLNBrm59ScQdOsGPj6QlQWDB3u6MhHpDEwPneXLlxMSEuI+PpSU\nlERKSgr5+fksXryYpKSkVrcFSE1NJSIigmPHjjFp0iRSU1PN7oJcZcgQ+OorOHsWysthxgxPVyQi\nnYWpoXPq1ClycnKIi4tzH5jy9/entLQUgJKSEgICAlrdFmDz5s1ER0cDEB0dzXvvvWdmF6QZNhv0\n6QNdNEErIm1g6inTCQkJpKWlUVZW5t6WmprKuHHjmDdvHi6Xi927d7e6LcCZM2fw8/MDwM/PjzNn\nzpjXARERaVemhU52djZ9+/bF4XDgdDrd22NjY8nIyGD69Ols2LCBmJgYcnNzW9X2ajabrdnTugGS\nk5Pd98PDwwkPD7/G3oiI3JicTucPfs+2t2taBqc1Fi1aRFZWFl5eXlRWVlJWVkZkZCSbNm1yj14M\nw8DX19c93fZDbWfMmMHatWsJDg7G6XTSr18/iouLmTBhAkePHm3cMf1OR0Skzcz+7jRtRn7JkiUU\nFhZSUFDAunXrmDhxIllZWQwePJidO3cCsH37doKCglrVdu3atQA88sgjrFmzBoA1a9bw6KOPmtUF\nERFpZ5Ytg3N5GiwzM5M5c+ZQVVWFt7c3mZmZABQVFREfH8+WLVuabQuwcOFCoqKiWLVqFXa7nfXr\n11vTARERuW6mTa95mqbXRETartNOr4mIiFxNoSMiIpZR6IiIiGUUOiIiYhmFjoiIWEahIyIillHo\niIiIZRQ6IiJiGYWOiIhYRqEjIiKWUeiIiIhlFDoiImIZhY6IiFhGoSMiIpax7Ho6IiI/doYBmzfD\n8eMwYgRMmuTpiqyn0BERsYBhQHQ0vPsu1NRAt26QkAApKZ6uzFq6iJuIiAUOHYKf/hQqKr7fdvPN\ncOoU3H675+q6mi7iJnKdLl6E6mpPVyE/dt9+Wz+6uVK3bnD+vGfq8RSFjtywSkvhZz8DX1/o0QMW\nLaqf4hDxhJEjG/7/Z7NBr15gt3usJI8wPXTq6upwOBxMmzYNgLy8PMaMGYPD4SAsLIy9e/c2alNZ\nWcnYsWMZOXIkISEhPP/88+7nkpOTCQwMxOFw4HA42Lp1q9ldkE4qLg4++wxqa+tvy5fDhg2erkp+\nrG69FT78EAYMgK5dITgYnM7Go58bneknEixfvpyQkBDKy8sBSEpKIiUlhSlTpvDBBx+QlJTEjh07\nGrTp3r07O3bswMfHh9raWsaNG8euXbu4//77sdlszJ07l7lz55pdunRyn3zScFqtogJ27oSoKM/V\nJD9uYWHw1VeersKzTB3pnDp1ipycHOLi4twHpvz9/SktLQWgpKSEgICAJtv6+PgAUF1dTV1dHbfc\ncov7OZ0gIK3Rv3/Dx927//imMkQ6GlNDJyEhgbS0NLp0+f5jUlNTSUxMZMCAAcyfP5+lS5c22dbl\ncjFy5Ej8/PyYMGECISEh7udWrFjBiBEjiI2NpaSkxMwuSCe2ahX07l0/b96zJ9xzD8yZ4+mqRH7c\nTJtey87Opm/fvjgcDpxOp3t7bGwsGRkZTJ8+nQ0bNhATE0Nubm6j9l26dOHgwYOUlpYyZcoUnE4n\n4eHhzJ49mxdffBGAF154gcTERFatWtVkDcnJye774eHhhIeHt2cXpYMbORKOHq2fUuvRAyZPrj9F\nVUS+53Q6G3xHm8203+ksWrSIrKwsvLy8qKyspKysjMjISDZt2kRZWRlQP03m6+vrnm5rTkpKCt7e\n3sybN6/B9hMnTjBt2jQOHz7cqI1+pyMi0nad9nc6S5YsobCwkIKCAtatW8fEiRPJyspi8ODB7Ny5\nE4Dt27cTFBTUqO23337rnja7dOkSubm5OBwOAIqLi92v27hxI8OHDzerCyIi0s4sWwbHZrMBkJmZ\nyZw5c6iqqsLb25vMzEwAioqKiI+PZ8uWLRQVFfHkk0/icrlwuVzMmjWLSf9apGjBggUcPHgQm83G\nwIEDWblypVVdEBGR66RlcERExK3TTq+JiIhcTaEjIiKWUeiIiIhlFDoiImIZhY6IiFhGoSMiIpZR\n6IiIiGUUOiIiYhmFjoiIWEahIyIillHoiIiIZRQ6IiJiGYWOiIhYRqEjIiKWUeiIiIhlFDoi0inl\n58OwYeDrC5MmwZkznq5IWkMXcRORTufsWbjnHigtrX/s5QU/+QkcPgz/ukixXCNdxE1E5Cp79sCV\n34u1tfB//1cfRtKxKXREpNPp3RtcrobbXC7o0cMz9UjrmR46dXV1OBwOpk2bBkBeXh5jxozB4XAQ\nFhbG3r17G7WprKxk7NixjBw5kpCQEJ5//nn3c+fOnSMiIoKgoCAmT55MSUmJ2V0QkQ5m3DgYNQp8\nfOof9+gBiYkKnc7A9GM6f/zjH9m/fz/l5eVs3ryZ8PBwnn/+eaZMmcIHH3zAq6++yo4dOxq1q6io\nwMfHh9raWsaNG8eyZcu4//77SUpK4vbbbycpKYlXXnmF8+fPk5qa2rhjOqYjckOrqYHVq+HECRgz\nBh591NMV3Rg69TGdU6dOkZOTQ1xcnLsT/v7+lP7r6F9JSQkBAQFNtvX5158w1dXV1NXVccsttwCw\nefNmoqOjAYiOjua9994zswsi0kF16wZPPw1LlihwOhMvM988ISGBtLQ0ysrK3NtSU1MZN24c8+bN\nw+VysXv37ibbulwuRo0axfHjx5k9ezYhISEAnDlzBj8/PwD8/Pw4o/MkRUQ6DdNCJzs7m759++Jw\nOHA6ne7tsbGxZGRkMH36dDZs2EBMTAy5ubmN2nfp0oWDBw9SWlrKlClTcDqdhIeHN3iNzWbD9gPn\nRyYnJ7vvh4eHN2ovIvJj53Q6G3xHm820YzqLFi0iKysLLy8vKisrKSsrIzIykk2bNrlHPoZh4Ovr\n655ua05KSgo+Pj4kJiYSHByM0+mkX79+FBcXM2HCBI4ePdq4YzqmIyLSZp32mM6SJUsoLCykoKCA\ndevWMXHiRLKyshg8eDA7d+4EYPv27QQFBTVq++2337rPSrt06RK5ubmMHDkSgEceeYQ1a9YAsGbN\nGh7VZK6ISKdh6jGdK12eBsvMzGTOnDlUVVXh7e1NZmYmAEVFRcTHx7NlyxaKiop48skncblcuFwu\nZs2axaRJkwBYuHAhUVFRrFq1Crvdzvr1663qgoiIXCctgyMiIm6ddnpNRETkagodERGxjEJHREQs\no9ARERHLKHRERMQyCh2RG8Dp03DoEFRUeLoSkR+m0BHp5BYvBru9frn/wEA4cMDTFYk0T7/TEenE\n9uyBSZMajnD694evv/ZcTdK56Xc6ItKsI0cabzt9GqqqrK9FpDUUOiKdWFAQXL3Q+m23wc03e6Ye\nkZYodERSnT3XAAALtElEQVQ6sfHjYfZs8PaGPn2gd2/QdQ2lI9MxHZEbwPHj9dNqISHwr4vsilwT\ns787FToiIuKmEwlEROSGodARERHLKHRERMQyCh0REbGMQkdERCxjeujU1dXhcDiYNm0aAHl5eYwZ\nMwaHw0FYWBh79+5t1KawsJAJEyYwdOhQhg0bRkZGhvu55ORkAgMDcTgcOBwOtm7danYXRESknZge\nOsuXLyckJATbv342nZSUREpKCvn5+SxevJikpKRGbbp160Z6ejpHjhxhz549/PnPf+bo0aNA/el8\nc+fOJT8/n/z8fKZOnWp2F0zldDo9XUKLOkONoDrbm+psX52lTrOZGjqnTp0iJyeHuLg493nf/v7+\nlJaWAlBSUkJAQECjdv369WPkyJEA9OzZkyFDhvD1FSsY3ki/v+kM/yN2hhpBdbY31dm+OkudZvMy\n880TEhJIS0ujrKzMvS01NZVx48Yxb948XC4Xu3fv/sH3OHHiBPn5+YwdO9a9bcWKFaxdu5bRo0ez\nbNkyfH19TeuDiIi0H9NGOtnZ2fTt2xeHw9FgZBIbG0tGRgYnT54kPT2dmJiYZt/jwoULPPbYYyxf\nvpyePXsCMHv2bAoKCjh48CD+/v4kJiaa1QUREWlvhkmef/55IzAw0LDb7Ua/fv0MHx8f44knnjB6\n9erlfo3L5TJ69+7dZPvq6mpj8uTJRnp6erOfUVBQYAwbNqzJ50aMGGEAuummm266teE2aNCg6/vy\nb4Ela6/t3LmTP/zhD7z//vuMGjWK9PR0HnjgAT766CMWLlzY6Aw2wzCIjo7mtttuIz09vcFzxcXF\n+Pv7A5Cens7evXv5y1/+YnYXRESkHZh6TOdKl89ey8zMZM6cOVRVVeHt7U1mZiYARUVFxMfHs2XL\nFnbt2sWbb75JaGgoDocDgKVLlzJ16lQWLFjAwYMHsdlsDBw4kJUrV1rVBRERuU437CrTIiLS8XSq\nFQk2bNjA0KFD6dq1K/v373dvz83NZfTo0YSGhjJ69Gh27NjRqO0jjzzC8OHDm33vQ4cO8dOf/pRh\nw4YRGhpK1XVc79fMOgFOnjxJz549WbZs2TXXaGadrWnfEeqE+hH0PffcQ3BwMNu2bbO8zqlTpzJy\n5EiGDh1KbGwsNTU1jd63srKSxx9/nNDQUEJCQkhNTe1wNYLn96HW1gme3YdaU2dH2Ida++/Z5n3I\n1CNG7eyLL74w/vnPfxrh4eHG/v373dvz8/ON4uJiwzAM4x//+IcREBDQoN0777xj/Pu//7sxfPjw\nJt+3pqbGCA0NNQ4dOmQYhmGcO3fOqKur63B1XjZjxgwjKirK+MMf/nDNNZpZZ0vtO0qdR44cMUaM\nGGFUV1cbBQUFxqBBgyz/715eXu6+P2PGDCMrK6vR+65evdr45S9/aRiGYVRUVBh2u9346quvOlSN\nHWEfak2dVz7vqX2oNXV2hH2oNXVeyz5k2TGd9hAcHNzk9ss/JAUICQnh0qVL1NTU0K1bNy5cuEB6\nejqZmZlERUU12X7btm2Ehoa6/yK+5TovvWhWnQDvvfced999Nz169LiuGs2s84fad6Q6N23axOOP\nP063bt2w2+0MHjyYvLw87rvvPsvqvPxTgJqaGqqrq7n99tsbtff39+fixYvU1dVx8eJFbrrpJnr3\n7t2hauwI+1Br6gTP70OtqbMj7EOtqfNa9qFONb3WGu+88w733nuv+z/OCy+8wLx58/Dx8Wm2zf/+\n7/9is9mYOnUq9957L2lpaR2yzgsXLvDqq6+SnJxsen2XXUudP9TeLNdSZ1FREYGBge7HgYGBDVa+\nsKJOgClTpuDn54e3t3eTyzpNmTKF3r174+/vj91uZ/78+ab+IPpaauwI+1Br6uwI+1Br6mypfUep\n81r2oQ430omIiOD06dONti9ZssS9aGhzjhw5wsKFC8nNzQXg4MGDfPnll6Snp3PixIlm29XU1PDJ\nJ5+wb98+vL29mTRpEvfeey8TJ07sUHUmJyeTkJCAj49Pq5cC8kSdzbXvqHVe6fJZllbUedlf//pX\nqqqq+MUvfsGaNWuIjo5u8Pybb77JpUuXKC4u5ty5c4wfP55JkyYxcODADlOjp/eh1tbp6X2otXW2\n1L6j1XmllvahTnVM57Kr5yUNwzAKCwuNoKAg49NPP3Vve/31143+/fsbdrvdCAwMNG666SZjwoQJ\njd5v3bp1RnR0tPtxSkqKkZaW1uHqHD9+vGG32w273W74+voat956q/HnP/+5w9XZXPuOVufSpUuN\npUuXuh9PmTLF2LNnj2V1Xm3t2rXGnDlzGm2fPXt2g/n0mJgYY/369R2qRk/vQ62t09P7UGvrbG17\nT9d5LftQpw2dffv2uR+fP3/eCA0NNTZu3NhsmxMnTjS7esH58+eNUaNGGRUVFUZNTY3x4IMPGjk5\nOR2uzislJycby5Ytu+4azaizNe07Qp2XD4JWVVUZX375pXH33XcbLpfLsjovXLhgFBUVGYZRfyA+\nKirKeOONNxq93/Lly42nnnrK3SYkJMQ4fPhwh6rR0/tQa+u8kif2obb8e3pyH2ptndeyD3Wq0Hn3\n3XeNwMBAo3v37oafn58xdepUwzDq/6rq0aOHMXLkSPft7NmzDdoWFBQ0OItp8+bNxosvvuh+/Oab\nbxpDhw41hg0bZixYsKDD1nlZe+wwZtXZmvYdoU7DMIzf//73xqBBg4yf/OQnxtatW6+5xmup8/Tp\n00ZYWJgRGhpqDB8+3Jg3b557h72yzsrKSmPmzJnGsGHDjJCQkOs648qsGg3Ds/tQW+q8zBP7UGvr\n9PQ+1JZ/z7buQ/pxqIiIWOaGO3tNREQ6LoWOiIhYRqEjIiKWUeiIiIhlFDoiImIZhY6IiFhGoSNy\nlcsLHZrl4YcfpqysjNLSUl5//fU2t3c6nS0uayLSUSl0RK7S4tpR12nLli307t2b8+fP89prr5n6\nWSIdjUJHpBUOHjzIfffdx4gRI4iMjKSkpASA8PBwFi5cyNixY/nJT37CJ598AkBFRQVRUVEMHTqU\nyMhI7rvvPg4cOACA3W7nu+++Y+HChRw/fhyHw0FSUhI7d+5sMIJ59tlnWbNmDQBbt25lyJAh3Hvv\nvWzcuNH9mosXLxITE8PYsWMZNWoUmzdvtuqfROSaKHREWuFXv/oVaWlp/P3vf2f48OG89NJLQP2o\nqK6ujs8++4z/+q//cm9/7bXXuO222zhy5AgpKSkNrtZos9mw2Wy88sorDBo0iPz8fF599dVGqx5f\nfl1lZSVPP/002dnZ7N+/n9OnT7tHY7///e+ZNGkSn332Gdu3b2f+/PlUVFRY9K8i0nYKHZEWlJaW\nUlpayvjx4wGIjo7mb3/7m/v5yMhIAEaNGuW+lMKuXbv45S9/CcDQoUMJDQ1t9L6tWYHKMAyOHj3K\nwIEDGTRoEABPPPGEu+22bdtITU3F4XAwYcIEqqqqKCwsvPbOipisw11PR6Sjuzosbr75ZgC6du1K\nbW1ts69riZeXFy6Xy/24srISaHyM6er3fffdd7nnnnva9FkinqKRjkgL+vTpwy233OI+XpOVlUV4\nePgPtrn//vtZv349AJ9//jmHDx9u9JpevXpRXl7ufnzXXXfx+eefU11dTUlJCR999BE2m43g4GBO\nnDjBl19+CcBbb73lbjNlyhQyMjLcj/Pz86+5nyJW0EhH5CoVFRXceeed7seJiYmsWbOG3/zmN1RU\nVDBo0CBWr17dZNvLo5JnnnmG6Ohohg4dSnBwMEOHDqVPnz4NXnvbbbdx//33M3z4cB566CFeeeUV\noqKiGDZsGAMHDmTUqFFA/UgqMzOThx9+GB8fH8aPH8/FixeB+sty/8d//AehoaG4XC7uvvtunUwg\nHZoubSBiApfLRU1NDTfffDPHjx8nIiKCY8eO4eWlv/Pkx017gIgJLl68yMSJE6mpqcEwDF5//XUF\njgga6YiIiIV0IoGIiFhGoSMiIpZR6IiIiGUUOiIiYhmFjoiIWEahIyIilvn/b0iz9xgd0EIAAAAA\nSUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that we didn't clear the axis between each frame because it was useful to see where the particle came from." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Plotting 3D" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We aren't using all of the information by just plotting in 2D. So, let's try a 3D plot so that we can see how the particle changes with depth. We need to import some more tools." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from mpl_toolkits.mplot3d import Axes3D" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "fig = plt.figure()\n", "ax=plt.gca(projection='3d')\n", "ax.scatter(lon,lat,dep,color='blue')\n", "\n", "ax.set_title('3D')\n", "ax.set_xlabel('Longitude')\n", "ax.set_ylabel('Latitude')\n", "ax.set_zlabel('Depth')\n", "\n", "ax.set_xlim([-124.6,-123.0])\n", "ax.set_ylim([48.25,48.65])\n", "ax.set_zlim([-100,0])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "(-100, 0)" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\npvDQyz0iBBv8o/5uLPJpnuVa8WKJG1u2bMHIkSNxyy23YMqUKYomyYceegjTpk3jA2IAMGXKFJx/\n/vkYPXo0LwWTuy9h1qxZmDt3bqOqYHT/v/rqKzz44IO48847MXz4cHTr1g3vvPMOHn30UcyePRvL\nly/HkSNH8J///KdsK4qJ4bggXanIZ48ePfj/79q1KyKRCBKJBGw2G4LBIJ566im8+OKLGDp0qOSx\n33nnHXTs2LGgwISeMJvNqKurQ11dHW6++WbeR7tp0yasXbsWEyZMwK5du2C323H48GGcddZZePLJ\nJ2G32xvJv7QI0mnhI86XaktuEbKsqBCOnkE5OYko+WRrpEDJpXkmYrdYLLyPdNq0afj444/x6quv\nonPnzorGXogUTGpfALj77rvx2GOPAchUBRs1ahRmz56N//73v3jzzTfx9NNPo6GhAW63G0BmVfCn\nP/0Jd911F/r374/bbruN7wJTaTgu3Aty8K9//Qu9evXirak//elPGD16NP9SiCEYDGLq1KmYMGFC\nkUZZOKiuRP/+/fHQQw/hzTffxKBBg7Bt2zZcdNFFOPnkk/G73/0OV1xxBcaMGYO3334b+/fv5+9L\nPB5HIBCA3+9XtLwHjvV2S6UyjUO1XuKzPdPoYyV/ajweL6gvnRTomjiO490gSq5J2Deturqab5FE\nvm4aN7mCDh06BLvdju3bt2Pw4MFwu9344IMPFBMuAPz3v//F4sWLUVdXh5tuugkrV67E7373O6xf\nvx5DhgwBAFx33XVYv369rH2HDRsGAGjVqhUfL7j99tv5/d1uNzZt2oRPPvkEV199NV544QXs27cP\nQMY4crvdWLhwIQBUJOECFWTpXnLJJThw4ECj30+aNAlXXXVVzn23bt2KcePG8TP5F198gR9//BFP\nPfUUdu7c2Wj7BQsWYMKECfj6668xefJkuN1ucByH7du3o3fv3ojH47Db7Zg2bRq/zCcMHjwYO3bs\nEC1L9+GHH2L8+PE599cD5557Lu666y6ceOKJ/O/YuhIzZ87MqivRp08f9OnTh/dX5lreUzUzdjms\nRxU1dtysJcha5HI6RMjttqBXbQaxhAhSJtDE8sADD2Dt2rWw2WwYMmQI6urqEAgEVC3BJ02ahEmT\nJgE4JgWbN28ezj77bKxevRoDBgyQbBAptu/cuXORTCaxZ88edPi1rc/jjz/Oj61r1664++67MXHi\n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\ngg==\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Adjust camera position" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Adjust the camera position to get a different perspective using ax.view_init(). " ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig = plt.figure()\n", "ax=plt.gca(projection='3d')\n", "ax.scatter(lon,lat,dep,color='blue')\n", "\n", "ax.set_title('3D')\n", "ax.set_xlabel('Longitude')\n", "ax.set_ylabel('Latitude')\n", "ax.set_zlabel('Depth')\n", "\n", "ax.set_xlim([-124.6,-123.0])\n", "ax.set_ylim([48.25,48.65])\n", "ax.set_zlim([-100,0])\n", "\n", "ax.view_init(elev=0, azim=-90)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\ne++9t96xvb29rxk7NjZW7rjjDklMTJSePXvKCy+8ICIid999t9x1112i0+nsR7iDg4Olf//+MmrU\nKAkKChKtViteXl4SFxcnycnJEh4eLtnZ2dKqVStRFEU8PT0lNTVVduzYIffff7+99qefflref/99\nefjhhyUoKKjW6U7VZ2C89NJLotPpxMvLS4xGo7Rv317y8vLkwoULkpqaKomJiZKQkCDTp08Xm81W\n5/b/5JNPJCIiQnQ6nb3+G237mxn/Vr+/DV1H9fKRkZH273FQUJBD38O8efMkOjpa4uLiZPPmzde8\ntz//+c+yd+9e2bp1q4wYMUJEqv5Q/PLLLzJ06FBZv369iIjs379fPvvsM/ty//d//yenT5++Zrym\ngKFLqrl6pisikpCQILt27RIRkTlz5sizzz4rIlWzqunTp4uIyKZNm+S+++4TEZG//OUvMmnSJBGp\nOg1Kp9PZP/JGRkbKr7/+es0Mujp0q02ZMkU+/vhjKS8vl4iICPn5559FRGT06NGSlpYmIlWnRH3y\nySciUjWj69Chg5SWljpuY9BNyczMlB49ekhubq4cPnxYpk6dKlOnThWTySSjRo2SRx99VFJSUuTZ\nZ5+VjRs3ir+/v/372tTw7AVymcLCQhQWFqJPnz4AgMcffxy7du2yf33kyJEAgG7dutkPun333XcY\nO3YsAKBz585ITEy8ZlxpwJXtIoIjR46gffv29stVH3nkEfuyW7ZswWuvvYauXbvinnvusXcJIdfo\n1q0bBg8ejGeeeQYzZszAjz/+iHnz5mHatGkIDg7GokWLsG/fPvj4+GDSpEn461//iujoaPspbA35\nmVALz16gJuPqX4zqLg01b4ZS1+tuRKfT1WoaWn0TlquPdl897rp16xAbG3tT6yLnmTt3LvLy8jB3\n7lykpqaivLwcR44cwYoVK+ynH+7evRudOnXChAkTAFSdh2wwGADAfkaFq3GmSy7j7++PwMBAfPvt\ntwCAlStXom/fvtddplevXvZT07Kzs/Hjjz9e8xpfX99aTULbtWuH7OxsmM1mFBQUID09HYqioGPH\njjh16pT9hiyrVq2yLzNw4EAsXrzY/viHH3645fdJjhMUFIR33nkH48ePh9FoRKtWrextlP7zn/8g\nKysLy5YtQ1lZGT744APMmDEDCxcuBIAmEbgAZ7qkorKyMkRERNgfP/fcc/j4448xadIklJWVITo6\nGitWrKhz2epZ6eTJk/H444+jc+fO6NixIzp37gx/f/9ar73tttvQq1cvJCQkYMiQIXj99dcxevRo\ndOnSBe3bt7efK+vh4YFly5Zh6NCh8PLyQp8+fey3J3zppZfw7LPPIjExETabDVFRUdiwYYMzNgvd\nApvNBhFBeXk5pk6dirS0NEyZMgWvv/46bDYbpk6diszMTGzatAnTp0/HM888gzfffPOaKwNdgbd2\nJLdSfXmph4cHfvnlF/Tv3x/Hjh2rdaUUtSz//Oc/8corr8Df3x///ve/8dFHH2H37t3IzMzEsGHD\ncNddd2HdunV46623XF0qAO5eIDdTWlqK3r17Izk5GSNHjsS7777LwG3hHnzwQXz55Zf23U7p6eno\n1KkT9u7di+LiYjz++OMoLi5GXl6eiyutwpkuETUrb7/9NgoLCzF79mwAwNGjR5GTk4P77rvPxZVV\nYegSUbNy+vRp/OEPf4DBYMD8+fORlJTUZA6iAdy9QETNTLt27bB9+3b0798fWVlZ9oOjTQVnukTU\nbDWVc3NrYugSEamIuxeIiFTE0CUiUhFDl4hIRQxdIiIVMXSJiFTE0CUiUhFDl4hIRQxdIiIVMXSJ\niFTE0CUiUhFDl4hIRQxdIiIVMXSJiFTE0CUiUhFDl4hIRQxdIiIVMXSJiFTE0CUiUhFDl4hIRQxd\nIiIVMXSJiFTE0CUiUhFDl4hIRQxdIiIVMXSJiFTE0CUiUhFDl4hIRf8Pp60KYKIVJ+sAAAAASUVO\nRK5CYII=\n", "text": [ "" ] } ], "prompt_number": 19 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Animate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, put it all together in an animation. This is very similat to the code for the 2D animation." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Empty map\n", "fig = plt.figure(figsize=(20,10))\n", "ax = fig.gca(projection='3d')\n", "\n", "ax.set_title('3D')\n", "ax.set_xlabel('Longitude')\n", "ax.set_ylabel('Latitude')\n", "ax.set_zlabel('Depth')\n", "\n", "ax.set_xlim([-124.6,-123.0]) \n", "ax.set_ylim([48.25,48.65])\n", "ax.set_zlim([-100,0])\n", "\n", "ax.view_init(elev=0, azim=-90)\n", "\n", "#Animated points\n", "def animate(p):\n", " ax.scatter(lon[p],lat[p],dep[p],color='blue')\n", "\n", "#The animation function \n", "anim = animation.FuncAnimation(fig, animate, frames=10)\n", "\n", "#A line that makes it all work\n", "mywriter = animation.FFMpegWriter()\n", "\n", "#Save in current folder\n", "anim.save('Software-Carpentry3D.mp4',writer=mywriter)\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n//77Z93/D//wD9m1a1f+1b/6V0mSPXv25MILL8wjjzyStWvXZvfu3TOP3bNnT9auXXtK6oWlztQn\nAAAAjvCzP/uz+f73v59du3Zl165dWbduXb7xjW/kKU95Sq666qrcddddmZyczK5du7Jz585s3Lix\n0yXDkqCjBgAAgKN64tSmDRs25Nprr82GDRvS1dWVrVu3mvoEC0RQAwAAwFF95zvfOWx78+bN2bx5\nc4eqgaXL1CcAAACAkhDUAAAAAJSEoAYAAACgJAQ1AAAAACUhqAEAAAAoCUENAAAAQEm4PTcAAACL\nzsTERD760Y/mu9/9bqamppIklUolf/AHf9DhyuDECGoAAABYdP7tv/23WbNmTS688ML09vZ2uhxY\nMIIaAAAAFp29e/fmc5/7XKfLgAVnjRoAAAAWnRe/+MX59re/3ekyYMHpqAEAAGDROP/885MkrVYr\nd9xxR575zGemp6cnyaE1aoQ3LHaCGgAAABaNT33qU0kOhTJFURz2tUql0omSYEEJagAAAFg0zjnn\nnCTJb/zGb+TOO+887Guz7YPFxho1AAAALDr/8A//cNj21NRUvv71r3eoGlg4ghoAAAAWjXe84x0Z\nGBjI3//932dgYGDmz1lnnZWrrrqq0+XBCRPUAAAAsGhs3rw5w8PDedOb3pTh4eGZP/v378873/nO\nTpcHJ8waNQAAACw6W7ZsyUc/+tE89NBDqVar+fmf//lcffXVnS4LTpiOGgAAABad173udfnABz6Q\nCy64IOedd17+7M/+LK973es6XRacMB01AAAALDpf+tKXsmPHjlSrh/oPXv3qV2fDhg0drgpOnI4a\nAAAAFp3169fne9/73sz29773vaxfv76DFcHC0FEDAADAojM0NJTnPe952bhxYyqVSrZv356LLroo\nV155ZSqVSj75yU92ukQ4LoIaAAAAFp3/8T/+x5xfq1Qqp7ASWFiCGgAAABadl770pfnud7+bf/7n\nf86ll16asbGxTE1NZdWqVZ0uDU6INWoAAABYdD74wQ/mmmuuyWtf+9okyZ49e9yemyVBUAMAAMCi\n86d/+qd56KGHZjpozj333PzgBz/ocFVw4gQ1AAAALDo9PT3p6emZ2Z6amrI2DUuCoAYAAIBF59/8\nm3+TW265JWNjY7n//vtzzTXX5Morr+x0WXDCBDUAAAAsOu985ztz5pln5vzzz88HPvCBXHHFFfnD\n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\najQaM3/n+BRFkampqSSZ+S8/URRFWq1WqtWq4zOLoihmjpGxODevndlNv2Ycn7k1m00fWMyi3W6n\n3W5ncnLSOjWzeOK5/ViOz9/+7d9m165d2bdvX572tKed7PJmPHFh4quuuirXX399brzxxuzduzc7\nd+7Mxo0bU6lUsmrVqjzyyCPZuHFj7rzzzvz2b//2KasRlhpBDTCv6QuI4eHh9Pb2pr+/PwcOHJj3\ngqLVas28MUwO3RGDhTMxMdHpEkqr3W57MzmP6QW/mZ2xNb/pjkqO1Gw23d1wHtPTpJndfMdntkDm\nWDtVTuTOTx//+Mfz27/92/nRj36Ul7/85Xn+85+fe++9Nxs2bMi1116bDRs2pKurK1u3bp25C9XW\nrVvz6le/OuPj47niiissJAwnoFKc6L3bgNJqt9tpNpvZv39/fuZnfmZm/7FsDwwMZHx8fObTsNNO\nO23mRDzb40877bS02+0MDg5mYGBg5k4GHL+iKDI5OZlGo5Genp50d3c7pj+lKIqZ12l/f7/jM4ui\nKDIyMpK+vj6LfM9jcHAwq1ev7nQZpTU6Opqurq709PR0upRSmpqaytjYWFasWGGczWJ6XbuiKNLX\n16f76Kc88Xzf1dWV3t7eeT8Qa7fb+dznPpf/+T//Z17wghfk5ptvPqUdNsDJJ6iBJezJBjVFUaTZ\nbGZkZCTVajW9vb3p6enJgQMH5nx+URQ5cOBAVq1alaIoMjw8fOr+gQAAy8SJhjHe9sHiIfIHkhxq\nux0fH5/ZXr169bzdCdNr0DzxpF+tVn0ivQAmJyczMTGR7u7u9PT06BKZRVEUaTQaaTabWblypWM0\nh+lumt7e3tTr9U6XU2o6ao5udHQ09Xo93d3dnS6ltJrNZsbHx9Pf369rZA6tVivj4+OpVCrp6+uz\nds0s2u32zDmuXq+np6cn1Wo1o6Ojcz5ehw0sLTpqYAk7WkfNdKvt6OhoarVa+vr6Uq/Xn1QHTaVS\nyfDwsE9pAABOIR02sHTpqIFlamJiIhMTEzOfZK1atepJddAMDQ2dkjoBADjSvn37Dtt+ssHNT1/3\nCW6gPAQ1sIwURTFzV5Nms5n+/v7U6/Xs379/zpBm+qQ9fSenSqViesACmv5/0mw2ZzqamFuj0Uij\n0cjKlSu1yx9Fs9nMxMSEqWHHyNSnY+N1dewajUYmJyfT39/v99U8nngetBjz/FqtViYmJtJqtWa9\nycBPT40yJQoWL1OfYAl74tSnvr6+TExMpKurK81m86iLC0/fxakoCt0zAACLyEIEMt4mQueIrGEJ\na7fbGRsbS3LoU5hVq1alVqtl//79cz5HB83JN70Q7uTk5Mwirz6Znt/0AssW6Dw2U1NTGR8f1/Xw\nJOioOXbNZjONRiP9/f1eX8dgultEZ83RtdvtmY6RFStW+H1/FFNTU5mYmEhRFOnp6TnsemK2hYd1\n2MDioaMGlrBms5nh4eE0Gg0dNAAAy5QOG1hcdNTAElar1dLf359GozHnY3TQnBpFUcys7TDbvHJm\nN32rW+sWHLtWq5XR0dEMDAx4jT0JOmqenMnJyUxOTmblypWdLmVRmF6HpdVq6UQ6Rk/sCu7r69Nd\ncxRFUcx02FQqlfT29h523tRhA4uLjhpYwua7PbcOGgCA5UmHDZSbjydhmdFBc2pNd4R0d3enp6fH\np6jHaGpqKmNjYzppniTdNMdPR82T12g0MjU1lf7+/k6XsmgURZHx8fEURZEVK1YYp8eo1WplbGws\n1Wo1fX191vo5Bk/s5K3Vaunt7T2sK0mHDZSbjhpYwp7YUaODBgCA2eiwgXLxMSUscTpoTr3pbpCu\nrq709fX5xPRJmO4I6evrS71e73Q5i0q73c7IyIhumuOko+b46Ko5PkVRZGxsLJVKxXniSZq+q12t\nVnPsnoQn3nGyq6srvb29h3Um6bCBctFRA0vY9LSb0dFRixeeAo1GI29/+9vzS7/0S3nJS15iys6T\ntHPnzrzvfe/Le97znnR3d3e6nEVny5Yt+cVf/MVcfPHFnS5lURoZGbEw7nEoiiK///u/n+uvvz4b\nNmzodDmLSlEU+cY3vpF77rknW7ZscY5+EqZDhz/4gz/IK17xirz4xS/udEmLRlEUmZyczNe//vV8\n7GMfy0033ZSzzjrrqM/53Oc+l9tuuy3Pf/7z84d/+IdZtWrVKaoYlidBDSxh7XY7r3zlK3PLLbd4\nAwIAwDEzHQo6R1ADAACwjLVarbzwhS/MunXr8qlPfSrbt2/P61//+jSbzXR1dWXr1q256KKLjnje\nwYMHc8MNN+Qf//EfU6lUcscdd+Tiiy/OW9/61vzFX/xFzjzzzCSHuj5/+Zd/+VT/s2DR0pcPAACw\njP3xH/9xNmzYkOHh4STJTTfdlLe//e152ctelnvvvTc33XRTvvSlLx3xvN/5nd/JFVdckb/927/N\n1NTUzFo3lUolN954Y2688cZT+u+ApcK97QAAAJapPXv25LOf/WxuuOGGmalKZ599dl772tfmyiuv\nzMGDB9Pb25uNGzfm+c9/fi666KI8+uijGRwczP/+3/87r3nNa5IkXV1dKYoiv/qrv5o/+ZM/ybve\n9a48/PDDSZL9+/fnsssuy7nnnpvLL788Bw8e7Ni/FxYDU58AAACWqWuuuSabN2/O0NBQ3vOe9+RT\nn/pU3vKWt+TWW29Nu93O6aefnnXr1uVtb3vbTIfNu9/97tx666157Wtfmw0bNuRb3/pWLrzwwoyN\njeWXfumXsnv37txxxx1ZuXJlLr744vT392fdunW56aab8q53vSsHDhzIO9/5zk7/06G0BDUAAADL\n0Kc//ence++9+dM//dM8+OCDee9735v3v//9ueCCC/LGN74xjz76aF71qlflDW94Q3p7e3P++efn\n+uuvz4c+9KF873vfy44dO/K85z0vf/VXf5Xbb789d911Vw4cOJAf/OAHOfPMM3POOedkfHw8P/7x\nj3PBBRfkm9/8Zh5//PH87M/+bHp7e61hA3MQ1AAAACxDmzdvzp133pmurq5MTExkaGgoZ5xxRn78\n4x/nM5/5TN7znvfkk5/8ZPr6+lKr1Q7rsPmd3/mdbN68OVu3bs273/3uvOpVr8p/+2//LVdfffVM\nh83nP//5bNu2LRdeeGFarVaSQ3eCWrFiRW655RZr2MAcrFEDAACwDL3jHe/I7t27s2vXrtx11105\n77zz8iu/8is599xz881vfjNJcvfdd2dqaio333xzLr300tx666357ne/m0qlkh/+8If53d/93axd\nuzbbtm3L4OBg/s//+T9ptVoZGRnJ4OBgPv3pT6dWq838zGc+85lpNBp573v/v/buPKzqMv//+Osc\nVhMwBRcu1FBwYxUhs0whEWVSy7AsJ8spNNPLrjEttb4tmGmLko2pldpCNHmNjVZkZWqWll6JC00u\nmeY2FOIGGLIctvv3hz/P5DiaqUc+wPPxl+dw7g+f++25rhte3Od9p6t79+7O5+ljA/wHO2oAAAAA\noIFbu3atRo4cqfLyclVXV+vYsWOqqqqSh4eH7Ha7VqxYoWeffVaenp76+uuvZbfb5XA45HA41Llz\nZx0+fFhubm46cuSIEhMTtWHDBjkcDvn6+qq8vFzTp0/XI488ojZt2qi0tFS+vr5q0qSJ4uLilJ6e\nrhkzZiggIIA+NoDYUQMAAAAADV58fLz27Nmj3Nxc5eXladWqVYqLi9PIkSPVpUsX5eTkyNvbWxMm\nTJAxRm3bttWnn36qmJgYBQUFKSkpSb/++qtuuukmjRw5UkFBQQoICFD79u3VpEkTPf/88/r66691\n8uRJpaSkaP/+/fruu+8UGBioCRMmaM6cOVq9erUkacSIEVq0aJFat26tmJgYxcTEaMWKFbVcIeDK\nYUcNAAAAAOAM59ph4+/vr8LCQm3atEn79u3TmDFj5HA49NBDDyk9PV0Oh0Nubm7y9fXVokWLlJKS\noiVLlmjEiBHy8fHRyZMnFRoaKi8vL40ePVpJSUm6/vrrdfz4cSUnJysrK4s+Nmjw3Gv7BgAAAAAA\n1nJ6h81pa9eu1axZszR69Gjdd999+vXXX+Xv76+QkBCVlpZq/vz5euyxx5wnRY0bN07FxcWSpJKS\nEvn4+Ojvf/+7IiMjJUnu7u5KSkrS+vXrZYyRl5eXTu8hsNlskiT2FKChYkcNAAAAAOC81q5dq/T0\ndEVEROiNN95QUVGRampqVFNToxYtWqi4uFgZGRkaO3as8vPz5ePjo9LSUtlsNrm5uWnYsGHatWuX\nKisrlZubq6ZNm6q4uFhlZWVaunSp7r//fnXq1EmrVq3Szz//rODgYHl6eqpDhw6Ki4vTE088oQce\neEAHDx5UcHCwlixZoquvvrq2ywK4BD1qAAAAAADnFR8fr6ysLM2YMUOHDx+Ww+HQ6tWrFRsbq5SU\nFHXs2FG5ubnq3r271qxZo+rqavXq1UsDBw7Ue++9p48//lj/93//p3Xr1ikzM1OBgYFq1qyZevfu\nrb59++qGG27Qzz//LEkaPXq0QkJClJiY6Oxjc+uttyopKUm7d+9WYmIijYZRr/HRJwAAAADARSks\nLFRWVpaqq6s1adIkVVVVacOGDaqsrNTUqVM1Y8YMvf322yopKdGBAwfUokUL2Ww2eXp6KiQkRJ9/\n/rm8vLycu3N8fX3l6empt99+WwsWLJDD4dDy5cu1fft2LVq0SIWFhfrrX/+qhIQEeXt7a9GiRWre\nvLkk6bnnnlNycnItVwS4dOyoAQAAAAD8Yf/rpKgBAwaoT58+6tixo77//nvnSVFdunTR008/Lbvd\nLmOMtm3bJl9fX3388cdyOByaPn26mjZtquTkZK1evVqVlZWSJG9vbw0bNkzu7u7auXOnvvzyS/30\n0086fPiwbDabJkyYoJycHOXk5BDSoN5gRw0AAAAA4LI4cuSI4uLilJmZqXvuuUd5eXk6duyY7Ha7\n2rZtqyeffFIjR47U/fffr1atWmn06NGKjIxUTEyMqqqqtG7dOv3000/au3evqqurFR0drXbt2qlR\no0aqqKhQZWWlxo4dq+LiYs2dO1eRkZHOk6EKCgp055130scGdR47agAAAAAAlyw+Pl6JiYnKysrS\nHXfcoaKiIlVVVSk0NFTbt29XRkaGWrRooV69eik7O1uhoaE6evSoVq9erTfffFONGzdWTU2NioqK\n5O7urvLyckVHR2vZsmVyOBxq3ry5EhMT9cEHHyg0NFRjx47V+vXrFRoaqtTUVKWlpdHHBvUCpz4B\nAAAAAC67/z7S+5///KeMMXrsscdUWlqq3NxcjR8/3nmk90MPPaQ5c+Zo6NCheuqpp/Tmm286GwxP\nmjRJjRs31meffaaoqCg1a9ZMDz74oG6//XZlZGRo8eLFmjt3rn788Ue1bNlS+fn5SkhI0K5du2q5\nCsAfx0efAAAAAAAuYbPZtGHDBtntdvXr1++MI70rKioUHh6uefPmKSsrS6mpqZo4caKGDx8um82m\n3r17Kzs7W+PGjVNZWZkOHjwou92ugoICeXl5ad68eRozZoz8/Py0evVqnThxQomJiXrggQf00EMP\n6fDhw0pLS3M2HK6qqpKHh4e2bt1a22UBzouPPgHAebz//vsKDw+Xm5ubtmzZ4nx+1apViouLU1RU\nlOLi4vTll1+eNfaWW25RZGTkea//73//Wz4+PkpPT7/s924VrqrhhYyvD1z5HnzuuefUoUMHde7c\nWStXrnTJ/de2i6lfcnKyunbtqvDwcKWmpjobWv5WeXm5hg0bpqioKIWFhdXb7fWuqp8kff/997r+\n+usVERGhqKgoORwOl8/nSnNl/aT6v4a4qn6sH5f+/rvQ9eOPHuktSX379tUdd9zhXL8efvhhTZ48\nWdu2bdM777wjSXr11Ve1bds2bd68WevWrdOmTZt04403ysPDQ99++63mzZunH3/8UTab7YyGwz16\n9NA999wjSaqurr60AgOuZAAA5/TDDz+YH3/80SQkJJgtW7Y4n8/JyTGHDh0yxhizfft2ExQUdMa4\npUuXmj//+c8mMjLyvNcfMmSIGTp0qJk1a9blv3mLcFUNf298feGq+u3YscNER0ebiooKs3//fhMS\n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\npEkTNW3a1Nl/JjMzUwkJCecd07NnTy1ZskSStHPnTm3btu2s1/j6+qq4uNj5+JprrtHOnTtVUVGh\noqIiffHFF7LZbOrcubMOHDigffv2SZIWL17sHNO/f3/NmTPH+TgnJ+ei5wkAABoedtQAAADLKy0t\nVZs2bZyPJ06cqIyMDD344IMqLS1VSEiI3nrrrf859vTul7Fjx2rEiBEKDw9X586dFR4eriZNmpzx\nWn9/f/Xs2VORkZG6+eab9cILL2jo0KGKiIhQu3bt1K1bN0mnduwsWLBAAwYM0FVXXaVevXqppKRE\nkvTkk09q/PjxioqKUk1Njdq3b09DYQAAcMFs5o/uAQYAAKiDampqVFlZKS8vL+3du1dJSUnavXu3\n3N35uxUAALAOfjIBAAANQklJifr06aPKykoZY/Tqq68S0gAAAMthRw0AAAAAAIBF0EwYAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACyCoAYAAAAAAMAiCGoAAAAAAAAsgqAGAAAAAADA\nIghqAAAAAAAALIKgBgAAAAAAwCIIagAAAAAAACzi/wEl77EzIsibmwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 20 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Key Points" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* The matplotlib.animation module contains some useful functions for generating animations\n", "* There are several ways to deal with clearing an axis between successive frames. For certain animations, this might not be desirable. \n", "* We can also use tools from mpl_toolkits.mplot3d to produce 3D plots." ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }