summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElena of Valhalla'' Grandi <valhalla@trueelena.org>2015-03-22 12:23:06 +0100
committerElena of Valhalla'' Grandi <valhalla@trueelena.org>2015-03-22 12:23:06 +0100
commite255aa8eed6977af633c93137d8a57ac8962eba8 (patch)
tree4fc5ca194f9fd6e84838c2c8832f4d24a0fa2c7c
Visualization notebook
-rw-r--r--ipython/mosquitto.ipynb119
1 files changed, 119 insertions, 0 deletions
diff --git a/ipython/mosquitto.ipynb b/ipython/mosquitto.ipynb
new file mode 100644
index 0000000..ac4240e
--- /dev/null
+++ b/ipython/mosquitto.ipynb
@@ -0,0 +1,119 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:7cf05771095db26c82daea63b3c748f552eaf7c87e811ca85e1b82487121dd0e"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "%matplotlib inline\n",
+ "\n",
+ "import datetime\n",
+ "\n",
+ "import matplotlib.pyplot as plt\n",
+ "import IPython.display\n",
+ "\n",
+ "import mosquitto\n",
+ "\n",
+ "\n",
+ "class UpdatingPlot:\n",
+ " \n",
+ " def __init__(self):\n",
+ " self.timestamps = []\n",
+ " self.data = []\n",
+ " self.max_len = 10\n",
+ " self.redraw_graph()\n",
+ "\n",
+ " def update(self, data):\n",
+ " self.timestamps.append(datetime.datetime.now())\n",
+ " self.data.append(data)\n",
+ " if len(self.data) > self.max_len:\n",
+ " self.timestamps = self.timestamps[-self.max_len:]\n",
+ " self.data = self.data[-self.max_len:]\n",
+ " self.redraw_graph()\n",
+ "\n",
+ " def redraw_graph(self):\n",
+ " plt.cla()\n",
+ " plt.title(\"Temperature\")\n",
+ " plt.axis(ymin=0, ymax=35)\n",
+ " plt.plot_date(self.timestamps, self.data, 'bo-')\n",
+ " IPython.display.clear_output(wait=True)\n",
+ " IPython.display.display(plt.gcf())\n",
+ "\n",
+ "\n",
+ "my_plot = UpdatingPlot()\n",
+ "\n",
+ "def on_connect(client, *args, **kwargs):\n",
+ " client.subscribe('data/#')\n",
+ "\n",
+ "def on_message(client, userdata, msg):\n",
+ " print(msg.topic+\" \"+str(msg.payload))\n",
+ " if 'here/temperature' in msg.topic:\n",
+ " try:\n",
+ " temp = float(msg.payload)\n",
+ " except ValueError:\n",
+ " temp = None\n",
+ " else:\n",
+ " my_plot.update(temp)\n",
+ " \n",
+ "client = mosquitto.Mosquitto()\n",
+ "client.on_connect = on_connect\n",
+ "client.on_message = on_message\n",
+ "\n",
+ "client.connect('inside')\n",
+ "\n",
+ "client.loop_start()\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7f21135636d8>"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#client.loop_stop()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEKCAYAAAASByJ7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuUXGW55/HvkwsdIIEQArlAMBJgQNQFR0RGIDQiSRBO\nEMdRWZ4RFJQZNEHO6BEIDI3IxXO4mGQcXGcJGjGAKIpgJCQH0nITOEKACGJISMiFpHMjFwi5dOeZ\nP963kp1KVSddXVV7V9Xvs1ZWqnbV3u/Tu3fXU+/zvntvc3dERER6pB2AiIhkgxKCiIgASggiIhIp\nIYiICKCEICIikRKCiIgASggiIhIpIUjVmdm7ZrYh/ttmZhsTz89PO75SmNlCM/tU2nGIdEevtAOQ\nxuPufXOPzWwBcJG7P55iSJ0ys57u3rGbtzlgFW5DpKLUQ5DMMLMeZnaFmc0zs1Vm9iszOyC+Njz2\nJi40s0VmttrM/qeZfdzMXjGzd8xscmJbF5rZ02Y22czWmtnfkt/gzWx/M7vTzN42syVmdr2Z9chb\n9zYzWwVca2aHm9njMa6VZvZLM9s/vv9u4DDg4djL+Y6ZNZvZ4ryfb3svwsxazOw3Zna3ma0DLugs\nJpFq0MEmWTIOGAuMBIYA7wA/znvPicARwJeAicBVwKeAY4EvmNnIvPfOAw4ErgV+a2b942s/B7YA\nI4DjgVHAxXnrzgcOBm4kfPu/IcZ1DDAMaAFw9/8BLALOcfd+7n5LkZ8v/zoxY4Ffu/v+wD17EJNI\nRSkhSJZcAlzt7m+7+1bgOuDzed+Sr3f3Le4+E9gA3OPuq9z9beBJwgdpzgp3n+juHe5+P/B34Bwz\nGwScBVzu7u+7+0rgR4Qkk/O2u//Y3be5+yZ3n+/uj7n7VndfBdwOnNbNn/cZd38oPt5/D2ISqSiN\nIUiWDAd+Z2bbEsvagUGJ522Jx+8XeL5v4vnSvO2/BQwllHd6A8vMtpf9exC+5efkl3sGEXokpwD9\n4vvX7O4H2o0liccf2IOYRCpKCUGyZBHwVXf/c/4LZja8hO0dkvf8A8DvCR/2m4ED3X3bLmsF+eWd\nG4EO4MPuvtbMPgtM7uT97wH75J6YWU/goE7a2JOYRCpKJSPJkp8AN5rZYQBmdpCZje3iNpIzfQ42\ns/Fm1tvM/jtwNPBHd18OzABuM7N+cTB7RN74Q76+hA/59WZ2CPDdvNfbCLX/nLlAHzP7jJn1Bq4G\nmopt3N2XlRCTSFkpIUiWTAQeAmaY2Xrgz4TB3Zw9uXlH8j3PAUcCK4Hrgf/m7u/E174C7AW8Rij9\n/BoYnNhGflvXAf8ArAMeBh7Ie89NwNVxttM/u/s64FLgp4TS0LvsXIYq1EZnMYlUnJVygxwz6wP8\nifCNZy/g9+5+pZm1EGZFrIxvvdLdp5cpVpE9ZmYXEs5vODXtWERqRUljCO6+ycxOd/eNZtYLeMrM\nTiF847nN3W8ra5QiIlJxJZeM3H1jfLgX0JMwZxy6cbamSBkVKsmISCdKTghx0OslwmDaLHd/Nb40\nzsxejmdc9u9kEyIV4+5T3F0DsiJdUNIYwk4bCKfvPwpcQRgMy40fXA8McfeLutWAiIhURbfPQ3D3\ndWY2DTjB3Vtzy83sp4TZGDsxM3XjRUS6yN0rXo4vqWRkZgNz5SAz2xs4E5htZskpcucBcwqt7+5l\n/XfttdeWfZv1FpPiqa14shiT4kkvnmoptYcwBJgSrzHTA7jb3R8zs1+Y2XGEwbwFhGvTiIhIDSh1\n2ukcwkk6+cu/0u2IREQkFXVxpnJzc3PaIewiazEpns5lLR7IXkyKp3NZi6cU3Z5l1OUGzbzabYqI\n1DIzw7M6qCwiIvVHCUFERAAlBBERiZQQREQEUEIQEZFICUFERAAlBBERiZQQREQEUEIQEZFICUFE\nRAAlBBERiZQQREQEUEIQEZFICUFERAAlBBERiZQQREQESCkhjB59NdOmPZFG0yIiUkRJ91Turhkz\nfsD8+RMAOPvskWmEICIieVIrGc2ffwOTJ89Mq3kREcmT6hjCpk0902xeREQSUk0Iffp0pNm8iIgk\ndDkhmFkfM3vOzF4ys9fM7Ka4fICZzTSzuWY2w8z6d7adESOuYty4M0uNW0REyszcvesrme3j7hvN\nrBfwFPAdYCywyt3/1cy+Bxzg7lcUWNdHj76acePO1ICyiMgeMDPc3SreTikJYfvKZvsAfwIuBB4A\nTnP3NjMbDLS6+9EF1vHutCki0miqlRBKGkMwsx5m9hLQBsxy91eBQe7eFt/SBgwqU4wiIlIFJZ2H\n4O7bgOPMbH/gUTM7Pe91N7Oi3YCWlpbtj5ubm2lubi4lDBGRutTa2kpra2vV2+1WyQjAzK4B3gcu\nBprdfbmZDSH0HFQyEhHppsyWjMxsYG4GkZntDZwJzAYeAi6Ib7sAeLDYNrZs6XqgIiJSWaWUjIYA\nU8ysByGh3O3uj5nZbOB+M7sIWAh8odgG2tpg2LBSwhURkUrpdsmoyw2a+bPPOp/4RFWbFRGpWZkt\nGZXDsmVptCoiIp1RQhAREUAJQUREolQSwttvp9GqiIh0Rj0EEREBUrpjmhJCfZg27QkmTZrB5s29\naGpqZ/z4UbpgodSVtI/xXPvVkkpCUMmo9k2b9gSXXfYo8+ffsH2Zbosq9STtY3zn9m/Y7fvLIZWE\nsHo1tLdDr1Ral3KYNGnGTn8oEG6L2tJyDX36KCFI7bv22nSP8ULtV1oqH8kHHggrVsDQoWm0LuWw\neXPhQ+eNN3py441VDkakAubNS/cYL9Z+JaWSEIYMCWUjJYTa1dTUXnD5SSd1MH16lYMRqYDRo9uZ\nUaB8X61jvFj7lZTKLKOhQzWwXOvGjx/FiBETdlqm26JKPUn7GC/UfqWl1kNQQqhtuUG1yy+/hk2b\nevKhD3UwbtwYDShL3cgdy5Mnh2O8T5/qHuPJ9h99tCpNpnNxu6uvdnr1gmuvrWrTUgHf+hYcdRSM\nH592JCL1q64vbpcbQ5Dat2xZ+H2KSO3TGIJ0y/LlMHhw2lGISDmk1kNQQqgP6iGI1A+VjKRk7iEh\nqIcgUh9SSQiDB8PKldDRkUbrUi7r14ezzfv2TTsSESmHVBLCXnvB/vvDqlVptC7lonKRSH1JJSGA\nykb1QOUikfqSWkLQTKPat3y5eggi9STVHoISQm1TyUikvighSMlUMhKpLyUlBDMbZmazzOxVM/ur\nmY2Py1vMbImZzY7/xhTbhsYQap9KRiL1pdSL220FLnf3l8ysL/CCmc0EHLjN3W/b3QaGDoXHHy+x\ndckElYxE6ktJCcHdlwPL4+N3zexvwCHx5T26AJNKRrVPJSOR+tLtMQQzGw4cDzwbF40zs5fN7E4z\n619sPZWMap9KRiL1pVv3Q4jlot8Al8Wewh3A9+PL1wO3Ahflr9fS0kJ7OyxdCrNmNXP66c3dCUNS\nsHkzbNgQbocqIuXV2tpKa2tr1dst+X4IZtYb+APwiLv/qMDrw4GH3f0jecs91+aAATB3LgwcWFII\nkqJFi+CTn4QlS9KORKT+Zfp+CGZmwJ3Aa8lkYGbJAsJ5wJzOtqNxhNqlAWWR+lNqyehk4J+AV8xs\ndlx2FXC+mR1HmG20ALiks40MHRrGET7ykc7eJVmkhCBSf0qdZfQUhXsXj3RlO+oh1C7dGEek/qR2\npjIoIdQy9RBE6k/qCUFTT2uTEoJI/Uk1IeiKp7VLJSOR+pN6D0EJoTaphyBSf1JPCCoZ1SYlBJH6\nU/KJaSU3mDgx7b33wpmu778PVvFTLqRctm2DPn3CmcpNTWlHI1L/Mn1iWrnsu2/4QFm7Ns0opKtW\nr4Z+/ZQMROpNqgkBNI5Qi1QuEqlPqSeE3NnKUjs0w0ikPqWeENRDqD3qIYjUJyUE6TLdGEekPmUi\nIahkVFt0YxyR+pR6QtDZyrVHJSOR+pR6QlDJqPaoZCRSnzKREFQyqi0qGYnUp9QTQq5kVOUTpqUb\nVDISqU+pJ4R+/cJlKzZsSDsS2RPvvgvt7bDffmlHIiLllnpCAI0j1JJcuUjXnhKpP5lICDpbuXao\nXCRSvzKRENRDqB2aYSRSv5QQpEs0w0ikfmUmIahkVBtUMhKpX5lICDpbuXboSqci9avLCcHMhpnZ\nLDN71cz+ambj4/IBZjbTzOaa2Qwz67+n21TJqHaohyBSv0rpIWwFLnf3Y4GTgG+a2THAFcBMdz8K\neCw+3yMqGdUOJQSR+tXlhODuy939pfj4XeBvwCHAWGBKfNsU4LN7uk2VjGqHSkYi9cu8G9eMMLPh\nwJ+ADwOL3P2AuNyANbnneet4fpvusM8+sGpVuM+yZFN7O+y9N2zaBD17ph2NSOMwM9y94qeD9ip1\nRTPrCzwAXObuGyxx6qq7u5kVzTQtLS3bHzc3N9Pc3Lx9HOGII0qNSCqtrQ0GDlQyEKm01tZWWltb\nq95uST0EM+sN/AF4xN1/FJe9DjS7+3IzGwLMcvejC6y7Sw8B4JRT4MYbYeTILocjVfLCC3DxxTB7\ndtqRiDSWavUQSpllZMCdwGu5ZBA9BFwQH18APNiV7WqmUfZpQFmkvpVSMjoZ+CfgFTPLfVe8ErgZ\nuN/MLgIWAl/oykaVELJPCUGkvnU5Ibj7UxTvWXy61EA09TT7NMNIpL5l4kxl0NTTWqAegkh9y0xC\nUMko+3SlU5H6lqmEoJJRtulKpyL1LTMJQSWj7FPJSKS+detM5ZIaLHIegjv06QNr14azYSVb3MPv\nZc2acFa5iFRPZs9DqBSzUJ9evjztSKSQtWuhqUnJQKSeZSYhgO6tnGUqF4nUv0wlBM00yi7NMBKp\nf0oIskc0w0ik/mUuIahklE0qGYnUv0wlBE09zS6VjETqX6YSgkpG2aWSkUj9y1xCUMkom1QyEql/\nmUoIKhlll650KlL/MpUQBg6E9ethy5a0I5F86iGI1L9MJYQePeDgg3W2cta8/z5s3AgDBqQdiYhU\nUqYSAuhs5Sxqa4NBg8LlRUSkfmUuIWimUfaoXCTSGJQQZLeUEEQaQyYTgkpG2aIZRiKNIXMJQVNP\ns0c9BJHGkLmEoJJR9ighiDQGJQTZLZWMRBpDSQnBzO4yszYzm5NY1mJmS8xsdvw3ppRta9pp9qiH\nINIYSu0h/AzI/8B34DZ3Pz7+m17Khg8+ONy3t729xMik7HSlU5HGUFJCcPcngXcKvNTtU5d69gyX\nsGhr6+6WpBw6OmDlynBimojUt3KPIYwzs5fN7E4z61/qRlQ2yo5Vq6B/f9hrr7QjEZFK61XGbd0B\nfD8+vh64Fbio0BtbWlq2P25ubqa5uXmn1zWwnB0qF4lUX2trK62trVVv19y9tBXNhgMPu/tHuvia\n767Nr38dTjgBLrmkpNCkjKZPh9tugxkz0o5EpHGZGe5e8auJla1kZGbJeSjnAXOKvXd3dLZydmiG\nkUjjKKlkZGb3AqcBA81sMXAt0GxmxxFmGy0ASv5+P3QovPhiqWtLOalkJNI4SkoI7n5+gcV3dTOW\n7TSGkB3Ll8Phh6cdhYhUQ+bOVAYlhCxRyUikcWQyIWjaaXaoZCTSODKZEAYNCidDdXSkHYksX64e\ngkijyGRC6N0bDjggJAVJj7tKRiKNJJMJAVQ2yoING8L/ffumG4eIVEdmE4IGltOXKxdZxU+HEZEs\nUEKQolQuEmksmU4IKhmlSzfGEWksmU0Iurdy+tRDEGksmU0IKhmlTwlBpLEoIUhRKhmJNJbMJgRN\nO02feggijSWzCWHw4HAbzW3b0o6kcSkhiDSWzCaEpibo1w9Wr047ksalkpFIY8lsQgCVjdK0ZQus\nWwcHHZR2JCJSLZlOCBpYTk9bW0gGPTJ9hIhIOWX6z10JIT0qF4k0nswnBJWM0qEBZZHGk+mEoLOV\n06Mb44g0nkwnBJWM0qMb44g0HiUEKUglI5HGk+mEoGmn6VHJSKTxZDohDBkSShfuaUfSeFQyEmk8\nJSUEM7vLzNrMbE5i2QAzm2lmc81shpn1725we+8NffrAO+90d0vSVSoZiTSeUnsIPwPG5C27Apjp\n7kcBj8Xn3aayUfW56zwEkUZUUkJw9yeB/O/tY4Ep8fEU4LPdiGs7DSxX35o1sO++oXcmIo2jnGMI\ng9y9LT5uAwaVY6NKCNWncpFIY+pViY26u5tZ0aHglpaW7Y+bm5tpbm4uui2drVx9mmEkkq7W1lZa\nW1ur3q55iVN4zGw48LC7fyQ+fx1odvflZjYEmOXuRxdYz7vS5u23w8KFMHFiSWFKCe6+G6ZPh6lT\n045ERADMDHe3SrdTzpLRQ8AF8fEFwIPl2KhKRtWnkpFIYyp12um9wDPAfzGzxWb2VeBm4Ewzmwt8\nKj7vNiWE6tMMI5HGVNIYgrufX+SlT3cjloI07bT6li2Dj30s7ShEpNoyfaYy7Ogh6Gzl6lHJSKQx\nZT4h9O0LPXvC+vVpR9I4VDISaUyZTwigslG1qYcg0phqIiFoYLl6Nm6EzZuhf7evRCUitUYJQXaS\nKxdZxWc8i0jW1ExCUMmoOlQuEmlcNZEQdG/l6lFCEGlcNZEQVDKqHs0wEmlcSgiyE/UQRBpXTSQE\nTTutHl3pVKRx1URCUA+henQvZZHGVRMJYb/9oKMDNmxIO5L6p5KRSOOqiYRgpplG1aKSkUjjqomE\nACobVUNHB6xeDYPKcvNTEak1Sgiy3YoVMGAA9KrIjVVFJOtqKiFoplFlqVwk0thqJiFoDKHyNMNI\npLHVTEJQyajyNMNIpLHVTLVYCaFz06Y9waRJM9i8uRdNTe2MHz+Ks88e2aVtqGQk0thqJiHobOXi\npk17gssue5T582/Yvmz+/AkAXUoKy5fDUUeVPTwRqREqGdWB22+fsVMyAJg//wYmT57Zpe2oZCTS\n2GomIRxwAGzaFO7oJbB1K/zhD3D++TBrVuGO3qZNPbu0TZWMRBpbzSQEM/US3OHpp+HSS0MJ7cYb\n4ZRTYOTI9oLv37Cho0vb1ywjkcZW9jEEM1sIrAc6gK3ufmK5tp1LCCNGlGuLteG112DqVLjnHujT\nB778ZXjuOTj88PD68OGjWLx4wk5lo0MOuYr588dw113wta/tvg139RBEGl0lBpUdaHb3NeXecD32\nEIrNDlq6FO69NySCFStCaei3v4Xjjtv1fse5gePJk69h06ae9OnTwbhxYzjiiJGcdRYsXQpXX935\nfZLXrw9nKPftW8EfVkQyrVKzjCpyi/Z6SwiFZgfNnj2BwYNh8eKRnHce3HornHYa9NzNcMDZZ48s\nOKPomWfgM5+BJUvgxz8uflkKDSiLSCXGEBz4DzP7i5l9vZwbrrepp5Mm7To7aOXKG+jRYybLlsFd\nd8GnPrX7ZNCZwYPhT3+ChQvhc58rPiivhCAileghnOzuy8zsIGCmmb3u7k8m39DS0rL9cXNzM83N\nzXu04SFD4O9/L2OkKVuzpvDu79+/J336lK+dfv3g4Yfh4ovhjDPC44EDd36P7qUskh2tra20trZW\nvd2yJwR3Xxb/X2lmvwNOBIomhK6ol5LRvHnQ0gIvv1x4dlCfPl2bHbQn9toLpkyBCRPg5JNh+nT4\n4Ad3vK4egkh25H9Rvu6666rSbllLRma2j5n1i4/3BUYBc8q1/VovGS1eDN/4Bpx0Ehx9NEydOooR\nIybs9J4RI65i3LgzK9K+WZiqOn58mK764os7XlNCEJFy9xAGAb+zMJ2lFzDV3WeUa+O12kNYsQJu\nugl+8YuQEObODfcdgJHss8+us4O6eg2irvrmN0NyHTMGfvlL2Lr1CaZOncF++/Xi8cdLuw6SiNQ+\nc/fqNmjmpba5bVuYh79hAzQ1lTmwCli7Fm65Be64I5w7cNVV2arTP/UUnHPOEzQ1PcqKFTsGt0eM\nmMDEiaOVFEQywsxw94rM3kyqmTOVAXr0CB+oWe8lvPde6BEceWSI9cUXYdKkbCUDCGWjY4+dsVMy\ngNKugyQita+mEgJku2y0eXP44D/iCHj55fAN/M474QMfSDuy4nr3Ls91kESk9tXM5a9zspgQ2tvD\nDJ7vfx8++lF45JFwRnEtaGqq3kwnEck29RC6Yds2uO8+OPbYMDh7771hjn+tJAOA8eOrO9NJRLKr\n5noIWZh66g7TpoU5/U1N4ZIQZ5zR+bWCsqrYdZA0oCzSeGpqlhHAT38ars9z111lDKoT+Refa24e\nxUMPjeTdd+EHP4CxY2szEYhI7ajWLKOa6yFUs2RU6OJzjz8+gW9/G26+eWS3rjEkIpI1NTeGUM2S\nUaGLz7W338CcOTOVDESk7tRcQqhmD2HzZk3JFJHGUXMJ4aCD4J13wj2FK+2ddzQlU0QaR80lhJ49\n4eCDw+WaK+m552DBglEceqimZIpIY6i5QWXYUTYaNqwy21+4EM47D6ZOHUmPHpqSKSKNoaYTQiWs\nWwfnnAPf+x784z8CFL41pYhIvam5khFULiG0t8MXvxjuYTx+fPm3LyKSZTWZECox9dQ9JAEzmDhR\nJ5uJSOOp2ZLRX/5S3m1OmgRPPglPPw29anKviIh0T01+9JW7ZPTww/DDH8Kf/wz77Ve+7YqI1JKa\nTAjdLRklr0+0ZUs7f/3rKGbOHJnp+xaIiFRaTSaE7vQQCl2faNCgCaxaBaDZRCLSuGpyUHnQIFi1\nKswK6qpC1ydqa9MtI0VEajIh9OoFBx4IK1Z0fd1163R9IhGRQmoyIUDXykYdHeGGNmPHwgsv6PpE\nIiKFlD0hmNkYM3vdzN4ws++Ve/s5e5IQ3n4brr8eDj8crrsOzj0X7r1Xt4wUESmkrAnBzHoC/xcY\nA3wION/MjilnGznJhNDa2rp9+bZt8Oij8LnPhXsdL10KDz4Izz8PF10En//8SCZOHM3o0ddw2mkt\njB59DRMnlv/6RMmYskDxdC5r8UD2YlI8nctaPKUodw/hRGCeuy90963AfcC5ZW6DadOeoLX1am64\noYXRo6/m3/99Cm1tcPPNcMQRcOWVMHo0LFoEP/kJHH/8zuufffZIpk+/ntbWFqZPv74i1yrK2sGh\neDqXtXggezEpns5lLZ5SlHva6SHA4sTzJcAnytlAbtrom2+GmUJvvQW9e5/K73//BF/60kjuuw8+\n/nFdekJEpKvKnRC8zNvbRaFpo1u3nsHIkTO5806dRyAiUipzL99nuJmdBLS4+5j4/Epgm7v/MPGe\niicNEZF64+4Vr3uUOyH0Av4OnAG8DTwPnO/ufytbIyIiUhFlLRm5e7uZfQt4FOgJ3KlkICJSG8ra\nQxARkRrm7kX/AXcBbcCcxLJ/A/4GvAz8Fti/yLpjgNeBN4Dv5b02Lm7jr8APC6w7DJgFvBrfMz4R\nzybgfWA2sCDGt0s8+e0nns+Py+YCM4D+iXiWA2vi+0Yl4vmvwEZgM7AauCkubwLWEgbTtwGPAPvH\nffR2fP8G4JJC+yMumxu3vTIXT2IfrUi0mYznY3G/bIrrvQbcFON5M8ayLb4nt492iqcC++hjwJy4\n3grg4bj850B7jOe9uI8mxm0tivHMA75SxXg6EvEsYscxVOl4tsTfwQrg+QwcQ3OArcAqwt/T81Tu\nGHogtjE77p9NRfbRgrif3kn8jD+n/MdQd+Jpiu1uYscxNDu+dkFsY26heBLbHgDMTMTTP/HalfH9\nnR3TExPLm4BfxeXPAh9IvLZTPJ193rv7bhPCqcDx7JwQzgR6xMc3AzcXWK9n/AUNB3oDLwHHxNdO\njzuid3x+UIH1BwPHxcd9CeMSx+THA9wC/Cw/niLtvxWf30I4sI+JB8w9MZ6PxvcNie+bx44e1PPA\nqfHxI4QD8RTgUuAp4B/iQfFabP9zhAOwP3B7PJjezIvn2NjGT4Ar4rJb4vqnA8/EZb3j9vPjORHY\nB/gj8Jl4INwK/C7uo0WE80BuiT9jfjwDKrCPTgT+GVgK/DkuvxVoJRzIX4z76D7gwBjT7fHf/AL7\nqFLx3J+I53XCMVSNeJbG/f5HYExcnvYxtCDGnoynEsfQzXH7HyIkqf9TZB8tjssfie0dQ2WOoe7E\ncynw/+J7csfQ1XF/5PZR/yLx5D4H/xX4l/g4P57c76xQPCfGx/nHUDKe+xJJJz+e/vmft8l/nZ6Y\n5u5PEn7xyWUz3X1bfPoccGiBVTs7Qe1/Eb5hb43bW1mg3eXu/lJ8/C7hA3hoMh4zM+ALwA8KxJPf\n/jPAJndfCJxD6GmcC0yJz28Czgbudfdl8X3zgE+Y2RCgX2wb4F7CgbgGGAv87/h4HeE8jEMJGXuG\nu68FniB8g1mftz++GdtoJnwg3Uf4xvHZuI9ejfFsdfcXC8TzvLtvBH5B+PDoGX/um+M+WkcY3P9C\n3C/JeFbm2i/nPiL8wX0GuJPwoQjhQ+tH8fEDcR+1A6MI34yeAA4CXsnbR5WM555EPEcCP6hSPFsA\ni7+zz8YYUj2GYgy/younEsdQbvvnEj7sphbYRwcDr8blU2Ib51KZY6g78YyNz3PxHEn4XBid20dx\nP+XHk/wcTG4jP57c7yw/nuTvLP8YSsZzRnycH89MQo+lqO6eqfw1QqbCzIaa2bS4vNAJaofEx0cC\nI83sWTNrNbMTCqy/nZkNJ3xbeS7vpVOBNnefXyCeQ4DVie1tjf8ABhEy+iGEbvA+hBshXAZckIuH\n8Af6Y2AosMTMepjZS4RvY+vd/bUCP2cvwsE5NP7MuZiWAJsSP+MSQvZfDAxy97a4bP8Y35GEb5sX\nJ/bREuDDhG+3S+K+6QFcD1xIKLH1z4tnM6Ec0CsvnpeAI8q9jwjf0r5L+MbVJ77nEMIHM+7eXmAf\n5X5nm4COasYDfDK2sbZK8TjwH0ALoQyZiye1YyjG9C/Al8zs6wXiKdcxNCguPwFYk/i7Te6jdYm2\nlwJ7xfUrcQx1N57c8kLHUM6m+C8n+TmY+52RF0/+NnLr5C9fmtjW9nji/llnZgd2sq2iSk4IZjYB\n2OLu98RA3nb3s+PLnY1U9wIOcPeTCH+s9xdYP9dGX+A3wGWxp5B0Pju+6eXH48DG/O3lc98+on4A\n8GtClr8/LtsI3Jh47zZ3P47wbfxAM2vO29xBsd0H8mMCFub9jEbxfeSEfdRE+ODYvo8I39q+nYyJ\n8Mcwk/Ddyqs4AAAEO0lEQVSBtG/etvoViecVyr+PBgIr3H12/Pl2EdtP7qPT2Pl3trWa8RCOoQ2J\n55WMB+Bkdz8e+A4w3MxOzdtc1Y8h4GTgIsIXrm8SkltSuY6hXKxHEb655+Tvo06V8RgqSzzsegzt\n1FTe84K/s7x4UlVSQjCzCwld8S8XectSwsBwzjB2ZKolhMFf3P0/gW0xm+W30ZvwS/+luz9YoI3z\nCF3dQvHkt987/oOQjY8hfOsfQsjgv43rbE3Ec2iMdSk7l8UOIAzenBBfOwz4POEP5313Xx2XfzoR\n097s+IZK3N6CGGObmQ2Oj9cRvs0uIfyBDsvtI+CDReI5lPBhMY3wh3pYbhfGmH5WIJ5h8Wco5z4a\nBow1swXA9wlJ8xfs+CbTP7af20dHEL7B5n5n+fuo0vFAOIZ6VCmeQ909d33efoRBvhNJ+RiKMR1K\nqHX/LsZfiWNoRTxPaThhbCL5c+Ri2i+xvUMJx3PutXIfQ92N57C4fvIYyv/cKfQ7W5qLJ/7OyMUT\nl+dvo9jnUG55bp3D4rZ6ESbWFIon+TlcmO9u1DnssOSg8hhCbXJgJ+v0IgxgDCd0s5KDKZcA18XH\nRwGLCqyfq7PeXiSeBcCsYvEUaX8Ruw4uXQFMB64jDObkZi18MK6fG8x5gVCXs/j+OfH5pcAfCH/c\nS9gxmPN5wsFzOCGBvBljTsbz4djGT4Cr4rJbCfXbSwjd1tzA4dK8eJ4j1E/7E7rKYwld6InAHbGd\nFYSSWrF4cgNy5dpHzxGuW2WEAe5nfceA12OED82vE+qouZkXC+PPUGwfVSqeX8a2Xq1iPP9JGOg1\nwnk6r8bfYZrH0EjCB/4fCbXrp4HJVOYYujnu5+fi+/Yq8jvLlcLyB3HLfQx1N5472PHZkxzEfXM3\n8SQHlXOzlq5g10HlYvHkjun8QeU74uMv7SaeTgeVd5cM7o07cQuhRvU1wreCt9gxZSs3uj0UmJZY\n9yzC7KB5wJWJ5b2Buwkfqi8AzfnrE2bwbIs7JtfOWYl4Ogi1vmQ8cwjfjnLxfBl4N9d+Ip4347Lc\ndK+BiXiWxn+vE7qCuXi+SJjqmqunfjcubyJ8o8p1+bYCj8eY1sQ4NxEO5rNiu+/l9kdc9gZ5UwYT\n+2h5XH8RYYBoKKEn8LG4Xm7a6SuEskBuOlx7jGdtYh+tivF3AI9VYB/lpsTNI/TsHorLfxV/lx7/\nXxrjeovwx9YRn19QxXjej/G0x/2WO4YqGc9YdhxDq9lxDKR5DL0e41lJmF56JZU7hvoTehrfICSv\neUV+ZwsInzdrEz9jJY6h7sTTRCjBrYvbHZ74fLs8/n7eiPEU+xwcQBhPKjTtNBnP6MTy5DE9KbE8\nF09u2mkynq/G5W8AF+yuA6AT00REBKjhW2iKiEh5KSGIiAighCAiIpESgoiIAEoIIiISKSGIiAig\nhCAiIpESgoiIAPD/AeW8rmSDCcmqAAAAAElFTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7f2113441860>"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [],
+ "language": "python",
+ "metadata": {},
+ "outputs": []
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file