{ "metadata": { "name": "", "signature": "sha256:928d32ab810179141cc6444460c2b1e48985160341a3e059ca1ac58fed89fc62" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Back To Back Bar Plot In MatPlotLib\n", "\n", "- **Author:** [Chris Albon](http://www.chrisalbon.com/), [@ChrisAlbon](https://twitter.com/chrisalbon)\n", "- **Date:** -\n", "- **Repo:** [Python 3 code snippets for data science](https://github.com/chrisalbon/code_py)\n", "- **Note:** Based on: [Sebastian Raschka](http://nbviewer.ipython.org/github/rasbt/matplotlib-gallery/blob/master/ipynb/barplots.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create dataframe" ] }, { "cell_type": "code", "collapsed": false, "input": [ "raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],\n", " 'pre_score': [4, 24, 31, 2, 3],\n", " 'mid_score': [25, 94, 57, 62, 70],\n", " 'post_score': [5, 43, 23, 23, 51]}\n", "df = pd.DataFrame(raw_data, columns = ['first_name', 'pre_score', 'mid_score', 'post_score'])\n", "df" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
first_namepre_scoremid_scorepost_score
0 Jason 4 25 5
1 Molly 24 94 43
2 Tina 31 57 23
3 Jake 2 62 23
4 Amy 3 70 51
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ " first_name pre_score mid_score post_score\n", "0 Jason 4 25 5\n", "1 Molly 24 94 43\n", "2 Tina 31 57 23\n", "3 Jake 2 62 23\n", "4 Amy 3 70 51" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Make plot" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# input data, specifically the second and \n", "# third rows, skipping the first column\n", "x1 = df.ix[1, 1:]\n", "x2 = df.ix[2, 1:]\n", "\n", "# Create the bar labels\n", "bar_labels = ['Pre Score', 'Mid Score', 'Post Score']\n", "\n", "# Create a figure\n", "fig = plt.figure(figsize=(8,6))\n", "\n", "# Set the y position\n", "y_pos = np.arange(len(x1))\n", "y_pos = [x for x in y_pos]\n", "plt.yticks(y_pos, bar_labels, fontsize=10)\n", "\n", "# Create a horizontal bar in the position y_pos\n", "plt.barh(y_pos, \n", " # using x1 data\n", " x1, \n", " # that is centered\n", " align='center', \n", " # with alpha 0.4\n", " alpha=0.4, \n", " # and color green\n", " color='#263F13')\n", "\n", "# Create a horizontal bar in the position y_pos\n", "plt.barh(y_pos, \n", " # using NEGATIVE x2 data\n", " -x2,\n", " # that is centered\n", " align='center', \n", " # with alpha 0.4\n", " alpha=0.4, \n", " # and color green\n", " color='#77A61D')\n", "\n", "# annotation and labels\n", "plt.xlabel('Tina\\'s Score: Light Green. Molly\\'s Score: Dark Green')\n", "t = plt.title('Comparison of Molly and Tina\\'s Score')\n", "plt.ylim([-1,len(x1)+0.1])\n", "plt.xlim([-max(x2)-10, max(x1)+10])\n", "plt.grid()\n", "\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGJCAYAAAAXGDB0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYHFW5gPF3IICsRkJEECRcWQREE0EQQRkBEcSoKIqI\nStCLolwCigouYBBcEBVEUa54IaCyqICCirLIhEWJAtkgbFECsgiEJRIgsvX94ztF1TTVk5lJZXpq\n+v09T57pqq6uOl11cs5X53zdDZIkSZIkSZIkSZIkSZIkSZIkSZIkSZKWoX2BP7a7EAUrAxcBjwLn\nLsPjPAf8V3o8FThmGR6rv+YDOw/idT8CvlxtUSRJg/FB4DrgMeBe4PfA9m0tUT19GJgOLNfi+SlE\nRz65af0haf1X+nmcYjBwOvDVAZVy2bgD2Klk/cVEvXoMeAr4T2H5hxUef1wqw0CtB5wHPEgEcXOA\n/aorljrNqHYXQBqkzwCHA58g7rKfAnYD3glc08ZyLcnywLPtLkSTDYDbiM66TCM9/xHgpML6/YBb\n0/OD0TXI1w2F3QuPTwf+CRzVprKU+SkwA3gFEai8BnhZxccYjnVVy0irOwFpOHsxcDTwKeDXwJNE\no/U7IkAAWAk4Ebgn/TsBWDE91w3cDXwOeIAYVXg38Hai03sIOKJwvCnAr4BzgH8D1xONb+YIYF56\n7qa0r8wkIjj5LrAg7WsScFV6viuV7X5gITAb2KLwPs9MZZwPfIm8A50EXA0cDzwM/IMIhlrZDOgB\nHgFuBCam9UcDRwJ7E3e9+7d4/d+AVYDN0/IWxDm+jt6d+gHA7cQ5/A2wTh9lyoKIG4F3FNavQJyr\n15a8ZjTwW+KcPExMb7y88HwPMeJwNXE9/giMKTz/YeDOtP8v9lG2Zs2By1TyaY5uoj59hriO9xLX\nJ7MH0XEvBO7ihSMpxWDq8LSvfwO3UD5qAbB1KsOTRBA3E/hD4fkdgD8T1/su8lGDJdWpYl39CvF/\n5tvEOfsXMT3yohZlkqQhtRvwNH0Hs18lGsO10r9ryIelu9Prv0zc/fw30fj9HFiV6PCeIO6YITrw\np4D3pO0PIzrf5dPze5Hflb0fWASsnZYnpWMdlMr7InoHA28jOtQ10vKmhX2dCVyQyrQBcRf+0cJ+\nnwI+RjTmBxJBT5kViGDlCGI08C1EZ7NJev4r6VitfIW4E/0C8M207ltpfz8l79x2IoatxxOdyEnA\ntMJ+Wk0TfI4ItDLvAma1KMuawJ7EeVwN+AVxjjI9RDCyUdrmCuAb6bnNiYBnh1S+7xDXplWHmzmd\nF+Y3FMvfnfYzhagTuwOPEx0vwI7kAd6WRKf6rpLjbEp03Nn1fwX5+Wp2KRHw7J22K9qAuL57p/Ks\nSR5YLalONdfVE4iAezRxvi8Evt6iTJI0pPYF7lvCNvPofae8K/ncbDfR2Wd3RKsTHdXrC9tfR0w5\nQDTyfy4810Xc/e3Q4tgzCq+dRNxVFU0iDwZ2Ihrkbekd3CxPDP++qrDu40Tnlu3j9sJzq6T38NKS\n8ryJF56vs8g78SlEp95K9vz6xHsZlf6ul9Znw+f/Rx4sQHQ4T5F3Vs3BQNbBrkt00qul5V8Bn+2j\nPEXjiRGCzBX0vuP/JDH/TyrnWYXnViHO8WCDgeLIwBP0vn73A9u02N+JxN13s43S63YmAri+jCaC\nnBuBZ4g6t3V67gtEPkGz/tSpYl3tIgLbYkCyHREIa4RxmkB19BBxt99X/V2X3g3bXWldcR/Z8OyT\n6e/9heefJO+cIIZuM420nA2Bf4RojB9J/15N76Hpf/ZRzj8BPwBOTsf/XyI4WYvoEJrfQ3FI/F+F\nx0+kv8UyZ9YtKcOdTftakkbaxzyiE7qNOAfF4fN1msr7OHGel3Sce4mRm72ITm43YpSmzCrEOZpP\nDLtPI+7Ai+UonpfidVyX3tfxiVS+KjxE75yLJwrH3ZbocB8gkv0+Qe/6kZkHHEoEX/cDZ9N6muVR\notN/NTEKNZO4g4cI2so67P7UqWI9GUuc7+vJ6/bFaT8aYQwGVEd/Ie5w9uxjm3uJTO3MK9K6wVq/\n8Hg54q74XmKo9cfE0OqawEuIu7Vi57SkBLvvE3d1mxND958jhtuf5oXv4e7mF/fDvan8xTJtMMB9\nZa89k5gbz6YViu+t+ZyvSnR6raYvis4APgS8jxiFaTXycxhxjrYhgoAdU9n6k4yYnYfMKpR3yv3V\n38TJs4iOej0i2DmF1m3v2cRIzgZp/8f1Y/8PEVMe6xJ18C7glSXbLWDJdarRtP2TRL18Sfo3mnxK\nSyOIwYDqaCEx5HsyMfe6CnHHszt543k2kROQ5QwcRd9D4UuyFRF8jCLu3hYD1xIdXoNoOJcjEvBe\nPYD9bk3cOa5A3E0uJpIhnyPmw79G3GFuAHwa+Nkgyn5t2vfn03G6iYS9c/p4TSvnAm8FfpmWix3x\n2cT7fy2RXPj1dOy7SvbT3HlfALyO+PhiX/kLqxEd1EKi4yv7WGOrwOA84n1vT+QMfJX+tYFl++tv\nAAJR5keIKZNtiI/ElgUSmxBTFisRwW5WF8ocR+QhjCJGkj5JTBs9TAQfuxCB1Sgi4Hlt2tdA6tRz\nwKnEtMbYtO7lxJSbRhiDAdXVd4k71C8Tw693EZ8uyJLJjiXm/Wenf9eldZnmxrivu7wGkRm/N9HY\n7kskEz4LzCXuyv5CDE+/mkjsKr627FjZujWIkYWHiaHvBcQnBAAOJoba/0HkGPycmKvua79lniY+\nPbA7MeLwAyKr/rY+9tWqvIuJqY3FJc9dTnwy4TziLnxD4AMtytd8zMXA+cRd6/l9lOVE4kuSFhAj\nCBeXlL3VcW4iRnDOSuV7mL6ncFqVtWxdX+fvU0Tg8W/i/LT6YqeViCmYB4mRkbWIqYAyKxN1/RHg\n78SIR5anchfxyZjDiFGDGeSffhlonTqcmL64lgjALiVPPJWkjpJl02vZOpK+RwUkLSN+6ZC0ZMP5\ny3FGijWJj7h9uN0FkTqR0wTSki1pGF1L5wBiaPtiek+xSJIkSZIkSVrmOnYudMcdd2xMmzZtyRtK\nkjRyTCM+XtxLxwYDQKPRqNc08JQpU5gyZUq7i6E2sx4oY10QDKwedHV1QUnfbwJhjcyfP7/dRdAw\nYD1QxrogqKYeGAxIktThDAZqZNKkSe0ugoYB64Ey1gVBNfXAnAFJkjqEOQMjQE9PT7uLoGHAeqCM\ndUFQTT0wGJAkqcM5TSBJUodwmkCSJJUyGKgR5wcF1gPlrAsCcwYkSVIFzBmQJKlDmDMgSZJKGQzU\niPODAuuBctYFgTkDkiSpAuYMSJLUIcwZkCRJpQwGasT5QYH1QDnrgsCcAUmSVAFzBiRJ6hDmDEiS\npFIGAzXi/KDAeqCcdUFgzoAkSaqAOQOSJHUIcwYkSVIpg4EacX5QYD1QzrogMGdAkiRVwJwBSZI6\nhDkDkiSplMFAjTg/KLAeKGddEJgzIEmSKmDOgCRJHcKcAUmSVMpgoEacHxRYD5SzLgjMGZAkSRUw\nZ0CSpA5hzoAkSSplMFAjzg8KrAfKWRcE5gxIkqQKmDMgSVKHMGdAkiSVMhioEecHBdYD5awLAnMG\nJElSBcwZkCSpQ5gzIEmSShkM1IjzgwLrgXLWBYE5A5IkqQLmDEiS1CHMGZAkSaUMBmrE+UGB9UA5\n64LAnAFJklQBcwYkSeoQ5gxIkqRSBgM14vygwHqgnHVBYM6AJEmqgDkDkiR1iFY5A6OGvihStU45\n9SQWLlrQ7mIMmVkz5rLxRpu1uxgapLXGjOXggya3uxhSLwYDNdLT00N3d3e7izHsLFy0gO6Jm7a7\nGEPmgvMv5F3vm9juYmiQ5s6YV9m+bBME1dQDcwYkSepwBgM14h2AAMaMHd3uImiYsE0QVFMPDAYk\nSepwBgM14meKBfDQg4+2uwgaJmwTBH7PgCRJqoDBQI04PygwZ0A52wSBOQOSJKkCBgM14vygwJwB\n5WwTBOYMSJKkChgM1IjzgwJzBpSzTRCYMyBJkipgMFAjzg8KzBlQzjZBYM6AJEmqgMFAjTg/KDBn\nQDnbBIE5A5IkqQIGAzXi/KDAnAHlbBME5gxIkqQKGAzUiPODAnMGlLNNEJgzIEmSKmAwUCPODwrM\nGVDONkFgzoAkSaqAwUCNOD8oMGdAOdsEgTkDkiSpAgYDNeL8oMCcAeVsEwTmDEiSpAoYDNSI84MC\ncwaUs00QDF3OwLPADGAO8Atg5QEeYwNgnz6Of1La92zgr8C4Ae5fkiQthf4EA08AE4AtgaeAAwd4\njA2BD7Z4bm9gnbTv1wDvBpZ2QnTUUr5+2HJ+UGDOgHK2CYL25AxcDWwEvAT4NTAL+AvRmQPsSIwi\nzACuB1YDvgm8Ka07pGl/LwPuKyzfSx4M7Jb2MRO4LK1bs8VxpwA/TeU7A1gL+BUx0vBX4I0DfJ+S\nJHWMgdxFjyI66IuBrxId9buBtwBnEqMHhwGfIjrqVYD/AIcDnwUmluzzF0QH/ibgcuBnROc/Fvhx\nWn8nkE2SHt3iuACvAnZIxzwLOAG4BngF8Adg8wG812HJ+UGBOQPK2SYIqqkH/QkGVibu6gGuBE4D\npgPvSeuuAMYAqxOd7wnAz4HzgXuArj72fQ+wKbBT+nc58D5g1XSsO9N22WjB9i2O2wAuJAIBgF2A\nzQrHWZ0ITp7ox/uVJKmj9CcYeJL87ruouZNvAMcBvwX2IAKDt/Vj/08Rd+5/AO4n7vov6WP7VsHF\nE03bbJv23dKkSZMYN24cAKNHj2b8+PHPR1jZHMxwWp45cyaHHnrosCnPcFq+fvpcALbadvMRv/zQ\ng49y05ybAdhiy4h5Xa7XclX1P1vX7v9/Lrd3+cQTT2zZf/X09DB16lSA5/u7Mn3dtWceI+6si74H\nPAgcC3QD3wG2Al4J/D1t80tiHv9u4Ltpu2YTiADgXiJ/YSoxTXAmcAPwZmA+kSvwcB/HnZLK+Z20\n358ToxnfTsvj036LGo1GYwlvfXjp6el5/mIrd9wJR9E9cdN2F2PIHLL/8Xz6859udzE0SHNnzOPo\no46pZF+2CYKB1YOuri4o6fv7MzJQ1mNOIaYLZgGPA/ul9YcQc/nPATcS+QUN4uOJM4HTiQ4981Lg\nVGCltDwd+AFxR/9xYqphOSJgeFsfx200lXMycHLabhQwjchlqDX/0wvMGVDONkEwdDkDa5SsewTY\ns2T95Bb72LnF+j+mf2WyqYP+HPfopuWHgA+02K8kSSrwGwhrpDhPqM7l9wwoY5sg8LcJJElSBQwG\nasT5QYE5A8rZJgiG7rcJJEnSCGYwUCPODwrMGVDONkFgzoAkSaqAwUCNOD8oMGdAOdsEgTkDkiSp\nAgYDNeL8oMCcAeVsEwTmDEiSpAoYDNSI84MCcwaUs00QmDMgSZIqYDBQI84PCswZUM42QWDOgCRJ\nqoDBQI04PygwZ0A52wSBOQOSJKkCBgM14vygwJwB5WwTBOYMSJKkChgM1IjzgwJzBpSzTRCYMyBJ\nkipgMFAjzg8KzBlQzjZBYM6AJEmqgMFAjTg/KDBnQDnbBIE5A5IkqQIGAzXi/KDAnAHlbBME5gxI\nkqQKGAzUiPODAnMGlLNNEJgzIEmSKjCq3QVQ//X09HgnUOLFq61Fz0W3trsYQ2bxogZzZ8xrdzE0\nSGuNGVvZvmwTBNXUA4MB1d6BB0xudxGG1LYT7AAkVaur3QVoo0aj0Wh3GSRJGjJdXV1Q0vebMyBJ\nUoczGKgRP1MssB4oZ10Q+D0DkiSpAuYMSJLUIcwZkCRJpQwGasT5QYH1QDnrgsCcAUmSVAFzBiRJ\n6hDmDEiSpFIGAzXi/KDAeqCcdUFgzoAkSaqAOQOSJHUIcwYkSVIpg4EacX5QYD1QzrogqKYejFr6\nYqgvp5x6EgsXLahkX3+fN5/pM/5Uyb5UX5dcPI0rrnxzu4uhYWD+HfO54srL210MVWCtMWM5+KDJ\nbTu+wcAytnDRAronblrJvrqpZj+qtyuvupLNJ2zU7mJoGLAejBxzZ8wb9Gu7u7uX+vhOE0iS1OEM\nBmrk+ulz210EDQMPPfhou4ugYeKmOTe3uwgaBvyeAUmStNQMBmpkq203b3cRNAyMGTu63UXQMLHF\nlpu1uwgaBswZkCRJS81goEbMGRCYM6CcOQMCcwYkSVIFDAZqxJwBgTkDypkzIDBnQJIkVcBgoEbM\nGRCYM6CcOQMCcwYkSVIFDAZqxJwBgTkDypkzIDBnQJIkVcBgoEbMGRCYM6CcOQMCcwYkSVIFDAZq\nxJwBgTkDypkzIDBnQJIkVcBgoEbMGRCYM6CcOQMCcwYkSVIFDAZqxJwBgTkDypkzIDBnQJIkVcBg\noEbMGRCYM6CcOQMCcwYkSVIFDAZqxJwBgTkDypkzIDBnQJIkVcBgoEbMGRCYM6CcOQOC9uQMPAf8\ntLA8CngQuCgtTwQOb/HaRS3Wfwm4EZgFzAC2GWCZJEnSUhg1wO0fB7YAXgQsBt4K3A000vMXkQcG\nzRol67YD9gAmAE8DawIrDbBMzUYBzyzlPoYlcwYE5gwoZ86AoH05A78nOnCAfYCzga60PAn4fnq8\nIfAXYDZwbIt9vQxYQAQCAA8D96XHrweuAWYC04FViSDk9LTPG4DuwnEvBC4HLgVWAU5Lr7sBeOeA\n36UkSR1iMMHAucAHiDv4LYkOt8z3gJOB1wD3ttjmEmB94Na07ZvT+hWBc4DJwHhgZ2Ik4iDg2bTP\nfYAzyEcSJgDvBd4CfJkIDLYFdgKOJwKEWjNnQGDOgHLmDAiqyRkY6DQBwBxgHNEZ/66P7d4I7Jke\n/ww4rmSbx4GtgDcRnfi5wBHE3fx9wPVpuyzfYHvgpPT4VuBOYBNiCuJSIGsldyXyFz6bllciDzqe\nN2nSJMaNGwfA6NGjGT9+/PPDLdnJXdrlTNaRZ0P9g1m+be6dS/V6l0fOctYJZMPELnfmcma4lMfl\nwS/fecc9ZAba38ycObPl8z09PUydOhXg+f6uTFfLZ8o9BqwOHAkcAuwIjAUOIzrfSUTnfjAx/L82\ncSe/BnBPem1f3gvsB3wROAXYoen584lpiCvS8pXEaMHrgK3TcQGuI4KV2/s4VqPRKEtjqNZxJxxF\n98RNl/lx1Dm++vlT+cj++7e7GJIqNHfGPI4+6phlfpyuri4o6fsH+9HC04ApwE19bHMNMZ0AsG+L\nbTYBNi4sTwDmE3fw6xAdPEQQsTxwVWFfmwCvAG7hhW/sj8QUQ3G/kiSpxECDgexW+h7gB4V1jZLH\nhxB37bOBdSn/NMFqwFQiqJgFvIoIMp4G9iZGAWYSnftKwA9TmWcTOQX7pW2LxwU4BlghbXcjcPQA\n3+ewZM6AwJwB5cwZELQnZ2CNknXT0j+IhL4z0uP5RN5A5siS195A5AGUuY746GGzj5asKx4XItnw\nwBb7lSRJBX4DYY34PQMCv2dAOb9nQOBvE0iSpAoYDNSIOQMCcwaUM2dA0J7fJpAkSSOMwUCNmDMg\nMGdAOXMGBOYMSJKkChgM1Ig5AwJzBpQzZ0BgzoAkSaqAwUCNmDMgMGdAOXMGBOYMSJKkChgM1Ig5\nAwJzBpQzZ0BgzoAkSaqAwUCNmDMgMGdAOXMGBOYMSJKkChgM1Ig5AwJzBpQzZ0BgzoAkSaqAwUCN\nmDMgMGdAOXMGBOYMSJKkChgM1Ig5AwJzBpQzZ0BgzoAkSaqAwUCNmDMgMGdAOXMGBOYMSJKkChgM\n1Ig5AwJzBpQzZ0BgzoAkSaqAwUCNmDMgMGdAOXMGBOYMSJKkChgM1Ig5AwJzBpQzZ0BgzoAkSapA\nV7sL0EaNRqOxzA9yyqknsXDRgmV+HHWOWTPmsvFGzhVLI8laY8Zy8EGTl/lxurq6oKTvNxiQJKlD\ntAoGnCaokSrmhVR/1gNlrAsCcwYkSVIFnCaQJKlDOE0gSZJKGQzUiPODAuuBctYFgTkDkiSpAuYM\nSJLUIcwZkCRJpQwGasT5QYH1QDnrgsCcAUmSVAFzBiRJ6hDmDEiSpFIGAzXi/KDAeqCcdUFgzoAk\nSaqAOQMaUqecehILFy1odzFqbdaMuWy80WbtLkZbDNVvvksjVaucgVFDXxR1soWLFtA9cdN2F6PW\nrrzqSjafsFG7i9EWc2fMa3cRpBHJaYIacX5QAA89+Gi7i6BhwjZBYM6AJEmqgMFAjXR3d7e7CBoG\nxowd3e4iaJiwTRBUUw8MBiRJ6nAGAzXi/KDAnAHlbBME5gxIkqQKGAzUiPODAnMGlLNNEJgzIEmS\nKmAwUCPODwrMGVDONkFgzoAkSaqAwUCNOD8oMGdAOdsEgTkDkiSpAgYDNeL8oMCcAeVsEwTmDEiS\npAoYDNSI84MCcwaUs00QmDMgSZIqYDBQI84PCswZUM42QWDOgCRJqoDBQI04PygwZ0A52wSBOQOS\nJKkCBgM14vygwJwB5WwTBOYMSJKkChgM1IjzgwJzBpSzTRCYMyBJkipgMFAjzg8KzBlQzjZBYM6A\nJEmqwGCDgWeBGcAc4BfAyktRhi8BNwKz0j63WYp9jWjODwrMGVDONkHQ3pyBJ4AJwJbAU8CBTc+P\n6ud+tgP2SPt6LbAz8M9Blmmgx5YkSVQzTXAVsBGwY3r8G+JOfzngeOCvxF3/x0te+zJgAfB0Wn4Y\nuC89fj1wDTATmA6sCrwIOB2YDdwAdKdtJwEXApcDlwKrAKel190AvHPp32b7OT8oMGdAOdsEQTX1\nYGnvokcBbwd+n5YnAFsAdxKd/6PEsP9KwNXAJcD8wusvAY4CbgUuA84FrgRWBM4B3g9cD6wGLAYO\nJaYoXgNsml6/SeHYW6Zjfp0IDD4KjCaCgsuIEQ1JklQw2JGBlYn5/b8RnftpQBcxCnBn2mZX4CNp\nu2uBNYkRhKLHga2IwOFBIhjYj+jo7yMCAYBFRBCwPfCztO7WdKxNgAYxIpDdMu0KHJGOfQURjKw/\nyPc6bDg/KDBnQDnbBEE19WCwIwNPEnfizR5vWv4fopPuy3PAtPRvDhEMXN/H9l0t1jcf+z3A7X0d\neNKkSYwbNw6A0aNHM378+OdPajbs4nK1y5nrp88FYKttN3d5EMs3zbkZgC223KyjlrtYARg+9dll\nl4f7ck9PD1OnTgV4vr8r06pjXZLHgNWb1nUDhwET0/IBxBTC+4BniDv4u+k9VJ/d1Wed9rHAGmk/\ntwB7A9elYz0BTCamIf47vfYSYGNgX2KE4eC0n6+l/WTLE4hRgqJGo9EYyHtuu56enucvdl0dd8JR\ndE/ctN3FqLVD9j+eT3/+0+0uRlvMnTGPo486pt3FGDZGQpugpTeQetDV1QUlff9gRwbKetFG0/qf\nAOOIBL4u4AFgz6bXrAZ8n5jXf4YICj5OJBTunZ5bmQgEdgF+CPyISCB8hhhFeLrk2McAJ6btlgP+\nwQhJIpQkqWqDDQbWKFmXDfVnGsR3CHypj/3cQOQBlLmO+Ohhs4+WrDsj/css5oUfd6w97wAE5gwo\nZ5sg8LcJJElSBQwGaqQ5CU+dye8ZUMY2QeBvE0iSpAoYDNSI84MCcwaUs00QmDMgSZIqYDBQI84P\nCswZUM42QWDOgCRJqoDBQI04PygwZ0A52wSBOQOSJKkCBgM14vygwJwB5WwTBOYMSJKkChgM1Ijz\ngwJzBpSzTRCYMyBJkipgMFAjzg8KzBlQzjZBYM6AJEmqgMFAjTg/KDBnQDnbBIE5A5IkqQIGAzXi\n/KDAnAHlbBME5gxIkqQKGAzUiPODAnMGlLNNEJgzIEmSKmAwUCPODwrMGVDONkFgzoAkSaqAwUCN\nOD8oMGdAOdsEgTkDkiSpAgYDNeL8oMCcAeVsEwTmDEiSpAoYDNSI84MCcwaUs00QmDMgSZIqMKrd\nBVD/9fT01P5O4MWrrUXPRbe2uxi1tnhRg7kz5rW7GG2x1pix7S7CsDIS2gQtvSrqgcGAhtSBB0xu\ndxFqb9sJdgCSqtXV7gK0UaPRaLS7DJIkDZmuri4o6fvNGZAkqcMZDNSInykWWA+Usy4I/J4BSZJU\nAXMGJEnqEOYMSJKkUgYDNeL8oMB6oJx1QWDOgCRJqoA5A5IkdQhzBiRJUimDgRpxflBgPVDOuiAw\nZ0CSJFXAnAFJkjqEOQOSJKmUwUCNOD8osB4oZ10QmDMgSZIqYM6AJEkdwpwBSZJUymCgRpwfFFgP\nlLMuCMwZkCRJFTBnQJKkDmHOgCRJKmUwUCPODwqsB8pZFwTmDEiSpAqYMyBJUocwZ0CSJJUyGKgR\n5wcF1gPlrAsCcwYkSVIFzBmQJKlDmDMgSZJKGQzUiPODAuuBctYFgTkDkiSpAuYMSJLUIcwZkCRJ\npQwGasT5QYH1QDnrgsCcAUmSVAFzBiRJ6hDmDEiSpFIGAzXi/KDAeqCcdUFgzoAkSaqAOQOSJHUI\ncwYkSVIpg4EacX5QYD1QzrogMGeg48ycObPdRdAwYD1QxrogqKYeGAzUyKOPPtruImgYsB4oY10Q\nVFMPDAYkSepwBgM1Mn/+/HYXQcOA9UAZ64KgmnrQyR8t7AF2bHchJEkaQtOA7nYXQpIkSZIkSZIk\nSf02BbgbmJH+7V547gvA7cAtwK5DXjK1w27E9b4dOLzNZdHQmg/MJtqBv6Z1awKXArcBlwCj21Iy\nLWunAfcDcwrr+rr29g0j0FeAz5Ss3xyYCawAjAPm4adDRrrlies8jrjuM4HN2lkgDak7iA6g6FvA\n59Pjw4FvDmmJNFTeBEygdzDQ6toPqm+w86iHsk99vAs4G3iauGOYB2wzhGXS0NuGuM7ziet+DlEP\n1Dma24J3Amekx2cA7x7a4miIXAU80rSu1bUfVN9gMFAPBwOzgP8jHwpal5g+yNwNvHyIy6Wh9XLg\nn4Vlr3lnaQCXAdcBB6R1axPDx6S/a7ehXGqPVtd+UH3DqEqLpsG6FHhZyfovAT8CvpqWjwG+A3ys\nxX78TeaRzevb2bYH7gPGEm3GLU3PN7COdKolXfsl1guDgeHhrf3c7ifARenxPcD6hefWS+s0cjVf\n8/XpfQegke2+9PdB4AJi6Pd+4kbiX8A6wAPtKZraoNW1H1Tf4DTB8LdO4fGe5AkkFwIfAFYENgQ2\nJs8w1sgYO6U9AAAIrElEQVR0HXGdxxHXfW+iHmjkWwVYPT1elcgQn0Nc//3S+v2AXw990dQmra69\nfcMIdSbxcaJZxMUuzgl+kUgOuQV429AXTW2wO3Arcd2/0OayaOhsSGSIzwRuJL/2axJ5BH60cGQ7\nG7gXeIrIG9qfvq+9fYMkSZIkSZIkSZIkSZIkSZIkSZIkSZKGkzHkP8d8H/nPMz8G/GAp9nvHALZ9\nA3BtOu5c4pch22EKcFjJ+mv68dr5vPAX7AB2BLbr43W7AdOBm4n3fw69v61sqPUAdzat+zVRH/oy\njvwLuLrJv5mzlSnkX9CyJKsAPye+32MO8SMxq/bztVUaBzwJ3EDU0+n0/z0UdbPk8wPxjYY9xOfW\nrwd+C7x6EMdTDfl1xBpqDxE/xQnRCT8GfHeIy3AGsBfR0HcBr6pgn8sBzw3wNa2+L3z7fr627Ncs\n30Kc07+UPPdq4CRgIvHFRaTH4+j9A0gQP5f8bD/KUYVHiPd8DfHFKetQ/XfsD2R/hxCB6r5peWPi\nF+CWxmDP5zzgdenxhsD5xHWf2s/X97eNXxs4F9iHCJQhrskriS85KhrKuqEh4tcRq92yDq2b/O5l\nCnAacAXwd+JXGzMXEF/LeyP5L7dB/r3cqwK/I76pbQ7w/pJjjiW+zxuik7g5PV4NOJ38Gx/3TOv3\nIb9LLP5e/CLg2+lY2wEfIu7eZgCnMPj/X4vS3+WAH6byXZLe13sL2x1M3MHNBjYlOvVPAJ9OZdih\nab+HA18jDwQgzvlV6XEPcALwN2AysFVadx3wB/If03olcHFaf2U6NkQH9T2iU/97U1lbaRCd0AfS\n8nuA88jrRRdwPHHuZ1N+PSlsexuwVlpeDrg9LS8CnkjrJwM3Edf47JL9vIz4trfM7cQ3vwF8JL1u\nJvHtoBDn/U9p/WXkIy1TiXpwLXAcrc9bf90BfCaVH+JO/s/EyME1wCZp/STiK2kvT+UpBkKvT9tv\n2LTv/0nlvbaw7hrgNwN8L2OBXxFff/tX4I1p/RRa/5+W1OG+Qj5M3k3vYOBqYAViWmEBcTcC8JL0\nd2Wig2geKn8v8OPC8holxz0SeJi4y/o4sFJafxy9RylGEz8Hemcqx/JEA/uu9PxzxAgDwGZEA5yV\n84fAh9PjU4mOtVnx/RdlQ+R7EQEAxJ3bw0RnCdExHJQefzIdI9vnZ0r2CRE4bNniOYiGOpuqGUV0\nNGPS8t7ET2hDnION0uNt0zJEh3FuerwZ0YkuyRVEpzaL6Lz/CGxAfg7eSwRCXcBLiWuxNq2nCY4i\n7uwhvr//lyXHvIeoW1BeP15L/AjMn4lfCs3e6xZEIJXVuezrXy8iv9b7EwErxPm4kDywaXXeJgJH\nl5RjHPl7zIwmD2pWJ69vuxCdMEQw8M9C+bpTGd9IdN7rlRzrvFSOVk7v53s5i3xk6xXE9Ab0/X9a\nw4DTBBqOGkQn+DQxrfAA0QHcSzT0707brUcM4U4vvHY2cbf+TWLO8+qS/R9DzAnvCnyQuPN/C7Az\n0ellHiXm4K9I5SC97s3EHdOzRCNKeu1WRGMLEaxkow/FEYyB2AH4RXp8fypH0fnp7w3kQQKUTx80\nG0M04CsTwdN30vqsM38V0fldlpaXJ87/qkSnUuxkV0x/G+Q/lnIzvX9Hoy/PEtdpH+BF9M4h2IHo\nYBpEPZhGBA/NnWTmNOLafA/4KNGJNZud9vlryn/YZxbwX0T92IUYKdkO2Im4Hg+n7R5Nf99AXid/\nBnwrPW4Q56lBjDptR/l5u4j+zelD72s7mhid2Cgdo9ieX1IoH0Rw9r/EL6T+i3LFfU8ngo1LgEPT\nuv68l13SsTKrE3Wmr//TGgYMBjRcPVV4/CxRV7uJTvcNwGKic1yp6XW3EzkJewDHEh3eMSX7/wcx\n7Hkq8ZOw2d1ec0faPDffRT7supjeQ7BnED8QUpWyYxf9J/3Nzs+S3EQELHOIBnk8MTKxWmGbxwvH\nuol8mDezBjHHP4FyxevWn6AE4n2eQ9xRNydzluVG9DX/fzcROO1EDInvU7LNHkRANxH4EjFa0jwH\n/ngqzwXECNDbiffW6j21Wp/dxS9HdM6tzlt/TSC/2z6GqN97EqMpPSXHhThf9xH/V14H/L5kvzel\n57JfwdyWGJV5R8k++3ovXem1T5U8V/Z/WsOEOQMajsoa1i7yjmgxcef6hpLt1knP/5wYIXhdyTZ7\nFB5vAjxDNG6Xkg+9Q9x5/ZUYHcimCT5A3J02u5wY1h+bltckhkmXxjVEg9xF3EXt2I/XPEb+U7fN\nvkV0fsWEyeyuLZOd+1uJ95Kd4xWAzYF/E1MUexW2f00/yrUkVwFf54Vz+FcRozXLpfK8mSX/HOtP\niDv0X/DCwKGLuC49wBHAi3nhJwXeSD4dtSLxvucTeQHvIw8cs23+TJ7zsC8xh96sivM2jsif+H5a\nXoP8znr/Pl7XRdTvdwDfoLwenUxMLxQ/idJcNzJ9vZdLyHMaIKZcVAMGA2q3RuFv2ePidn8g7ibm\nEo1aWcb8luRJfEdSPirwIaKzm0EMs+5L3P0dSzTwc4gEsW5iSPUIYhRiJjENkA3pFst4M/BlojGc\nlf5mCXetcgZIr/ln+ndX037PI+505wI/JaYDFpbso3i+LiLuFGfwwk8l3EhMs5xJ/LTp1UTi11lN\n+4K4i9uLyKOYmfaXdRT7Ah8j/zndd5a8vvnxjJJyN/su+RB89toLyBM6Lwc+R54s2upYFxEdWdkU\nwfLEuZxNnM/vEZ1b0SuJYCHb5m/ElMxcIgFzGvHes6mVg4nOeBZxbg4p7KtYrlbnrVXOQFaW7KOF\n56bynpGe+xbx/+CG9L5a/f/Jlh8gAoKTiVGTovuJoOsbxOjaNcTUU/Hjvv15L5OBrYlzcROR0Fr2\neknSAGR3rWOIj5m9tI1lqYutKR+9kSSplq4g7qpvIj7Wpr4dQQzpN+c6SJIkSZIkSZIkSZIkSZIk\nSZIkSZIkSQr/D2+u2/bHfPotAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 35 } ], "metadata": {} } ] }