Skip to content

Instantly share code, notes, and snippets.

@spencerkclark
Last active January 2, 2018 17:36
Show Gist options
  • Save spencerkclark/7bd3734a6bc7752163b2d0762ded8af7 to your computer and use it in GitHub Desktop.
Save spencerkclark/7bd3734a6bc7752163b2d0762ded8af7 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"collapsed": true,
"editable": true,
"deletable": true,
"trusted": true
},
"cell_type": "code",
"source": "import matplotlib.pyplot as plt\nimport numpy as np\n\nfrom mpl_toolkits.axes_grid1 import AxesGrid\n%matplotlib inline",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"editable": true,
"deletable": true,
"trusted": true
},
"cell_type": "code",
"source": "class WidthAxesGrid(object):\n def __init__(self, rows, cols, width, top_pad=0., bottom_pad=0., \n left_pad=0., right_pad=0., cbar_size=0.125, \n cbar_pad=0.125, axes_pad=(0.2, 0.2), cbar_mode=None, \n cbar_location='bottom', aspect=0.5, cbar_short_side_pad=0.):\n self.fig = plt.figure()\n self.rows = rows\n self.cols = cols\n self.width = width\n self.top_pad = top_pad\n self.bottom_pad = bottom_pad\n self.left_pad = left_pad\n self.right_pad = right_pad\n self.cbar_size = cbar_size\n self.cbar_pad = cbar_pad\n self.axes_pad = axes_pad\n self.cbar_short_side_pad = cbar_short_side_pad\n \n self.aspect = aspect\n self.cbar_mode = cbar_mode\n self.cbar_location = cbar_location\n \n self.grid = AxesGrid(self.fig, self.rect(), nrows_ncols=(self.rows, self.cols),\n cbar_size=self.cbar_size, cbar_pad=self.cbar_pad,\n axes_pad=self.axes_pad, cbar_mode=self.cbar_mode, \n cbar_location=self.cbar_location, aspect=False)\n \n self.fig.set_size_inches(self.width, self.height)\n self.caxes = self.resize_colorbar_axes()\n \n @property\n def plot_width(self):\n if self.cbar_mode == 'each':\n if self.cbar_location in ['left', 'right']:\n return (self.width - self.left_pad - self.right_pad - \n (self.cols - 1) * self.axes_pad[0] - \n self.cols * (self.cbar_size + self.cbar_pad)) / self.cols\n elif self.cbar_location in ['bottom', 'top']:\n return (self.width - self.left_pad - self.right_pad - \n (self.cols - 1) * self.axes_pad[0]) / self.cols\n else:\n raise ValueError\n elif self.cbar_mode == 'single':\n if self.cbar_location in ['left', 'right']:\n return (self.width - self.left_pad - self.right_pad - \n (self.cols - 1) * self.axes_pad[0] - \n self.cbar_size - self.cbar_pad) / self.cols\n elif self.cbar_location in ['bottom', 'top']:\n return (self.width - self.left_pad - self.right_pad - \n (self.cols - 1) * self.axes_pad[0]) / self.cols\n else:\n raise ValueError\n elif self.cbar_mode is None:\n return (self.width - self.left_pad - self.right_pad) / self.cols\n else:\n raise ValueError\n \n @property\n def plot_height(self):\n return self.plot_width * self.aspect\n \n @property\n def height(self):\n if self.cbar_mode == 'each':\n if self.cbar_location in ['left', 'right']:\n return (self.plot_height * self.rows + self.top_pad +\n self.bottom_pad + (self.rows - 1) * self.axes_pad[1])\n elif self.cbar_location in ['bottom', 'top']:\n return ((self.plot_height + self.cbar_pad + self.cbar_size) * \n self.rows + self.top_pad + self.bottom_pad + (self.rows - 1) * self.axes_pad[1]) \n else:\n raise ValueError\n elif self.cbar_mode == 'single':\n if self.cbar_location in ['left', 'right']:\n return (self.plot_height * self.rows + self.top_pad + \n self.bottom_pad + (self.rows - 1) * self.axes_pad[1])\n elif self.cbar_location in ['bottom', 'top']:\n return (self.cbar_pad + self.cbar_size + self.plot_height * \n self.rows + self.top_pad + self.bottom_pad + (self.rows - 1) * self.axes_pad[1])\n else:\n raise ValueError\n elif self.cbar_mode is None:\n return (self.plot_height * self.rows + self.top_pad + \n self.bottom_pad + (self.rows - 1) * self.axes_pad[1])\n else:\n raise ValueError\n \n def rect(self):\n x0 = self.left_pad / self.width\n y0 = self.bottom_pad / self.height\n x = (self.width - self.left_pad - self.right_pad) / self.width\n y = (self.height - self.top_pad - self.bottom_pad) / self.height\n return [x0, y0, x, y]\n \n def restore_aspect(self):\n \"\"\"Not needed since with aspect=False in AxesGrid we can set the \n aspect ratio of the panels implicitly by precisely setting the \n figure size. This can be used in the case where one sets aspect=True\n in AxesGrid.\n \"\"\"\n for ax in self.grid.axes_all:\n x0, x1 = ax.get_xlim()\n y0, y1 = ax.get_ylim()\n data_aspect = np.abs((y1 - y0) / (x1 - x0))\n ax.set_aspect(self.aspect / data_aspect)\n \n def resize_colorbar_axes(self):\n if self.cbar_mode == 'each':\n caxes = []\n for cax in self.grid.cbar_axes:\n loc = cax.get_axes_locator()\n pos = loc(cax, None)\n cax.set_visible(False)\n \n pos2 = self.compute_cax_position(pos)\n caxes.append(self.fig.add_axes(pos2))\n return caxes\n \n elif self.cbar_mode == 'single':\n cax = self.grid.cbar_axes[0]\n loc = cax.get_axes_locator()\n pos = loc(cax, None)\n cax.set_visible(False)\n pos2 = self.compute_cax_position(pos)\n return self.fig.add_axes(pos2)\n else:\n return None\n \n def compute_cax_position(self, pos):\n if self.cbar_location in ['bottom', 'top']:\n return [pos.x0 + self.cbar_short_side_pad / self.width, pos.y0,\n pos.width - 2. * self.cbar_short_side_pad / self.width, pos.height]\n elif self.cbar_location in ['left', 'right']:\n return [pos.x0, pos.y0 + self.cbar_short_side_pad / self.height, pos.width,\n pos.height - 2. * self.cbar_short_side_pad / self.height]\n else:\n raise ValueError",
"execution_count": 2,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"editable": true,
"deletable": true,
"trusted": true
},
"cell_type": "code",
"source": "wa = WidthAxesGrid(3, 1, 3.2, left_pad=0.5, right_pad=0.5, top_pad=0.2, bottom_pad=0.5, axes_pad=(0.25, 0.2))\nfor ax in wa.grid.axes_all:\n ax.set_xlim(0, 4)\n ax.axvline(2.)\n ax.axhline(0.5)\n \nwa.fig.savefig('test.pdf')",
"execution_count": 3,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x10f4d4f90>"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"editable": true,
"deletable": true,
"trusted": true
},
"cell_type": "code",
"source": "wa = WidthAxesGrid(3, 1, 3.2, left_pad=0.5, right_pad=0.5, top_pad=0.2, bottom_pad=0.5, axes_pad=(0.25, 0.3),\n cbar_mode='each', cbar_size=0.125, cbar_pad=0.3, cbar_location='bottom', cbar_short_side_pad=0.2)\nfor ax in wa.grid.axes_all:\n ax.set_xlim(0, 4)\n ax.axvline(2.)\n ax.axhline(0.5)\n\nwa.fig.savefig('test2.pdf')",
"execution_count": 4,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n/eAAAAAASUVORK5CYII=\n",
"text/plain": "<matplotlib.figure.Figure at 0x10f4ead10>"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"editable": true,
"deletable": true,
"trusted": true
},
"cell_type": "code",
"source": "import matplotlib as mpl\nwa = WidthAxesGrid(3, 1, 3.2, left_pad=0.5, right_pad=0.5, top_pad=0.2, bottom_pad=0.5,\n axes_pad=(0.25, 0.2),\n cbar_mode='single', cbar_size=0.125, cbar_pad=0.125, cbar_location='right', \n cbar_short_side_pad=0.5)\nfor ax in wa.grid.axes_all:\n ax.set_xlim(0, 4)\n ax.axvline(2.)\n ax.axhline(0.5)\n\n cs = ax.contourf(np.random.random((10, 20)),\n extend='both')\n\ncmap = mpl.cm.viridis\ncb = mpl.colorbar.ColorbarBase(wa.caxes, cmap=cmap,\n orientation='vertical')\ncb.ax.get_position()\nwa.fig.savefig('test3.pdf')",
"execution_count": 5,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAANEAAAESCAYAAABjMTBBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJztnWuQHcV1x/9n77K7YhfJIuJlgUAF\nigIlAq4Qh5gPBhsrsuPClSonBpepOEWsL3aCC5MULqcSQr44D5w4ZZdjle0iJrFT2AkplcsxkNiE\nVPAD8APEQ0E2WBaYKAJZWgmtpL178mHuXM1ezUyffk333Olf1dbuvXduT+9M/+d0n+4+h5gZiUTC\nnInQFUgk2k4SUSJhSRJRImFJElEiYUkSUSJhSRJRImFJElEiYUkSUSJhSRJRImHJpJdCV8zy1MrT\nSz/rT+uX15vuax2/cmqh9P2Dx2b0Tz6gf7Rn/F0AwOJU9nvyGHpH7YrSpbcQ36qUiSPHh38fPL53\nHzOfEbA6VngR0dTK07Hh+luUx81fuKRV7tz6A6ZVAgCcqXHsoedWWZ1rlKV96wAAE2t2a3/3tB+G\n6TCs3nmskfP85323/biRE3nCi4iklDWOOmGVNWxbYVWVGxO6DxvAjfD2b5yy+n5TIgxNUBGVMXrz\nVQ1IR1ihxDK3/gAOH1oEAMyW1M1HvUIJr4hYhPc5PW3jRCeiUXStFRDesuhaR1tr6ur/NRFeTqgu\nZwxEL6IyTITlExddylDnDy3AcRBfK0VUhm430BZpw928bicA4MFnzwcAXD14LeX+3Rv1KqaJiQBd\nWvqQDz9XjI2IRnEtKl3RuMJ1eS5EaWr5QnezfTG2IhqlKCqpoHQai+vG7otiPX1buVGK13OcBNUZ\nEelYIt0nbVsEBPgTzjiJQpexF5EPq1MkdgHpiKbLQrBh7ETU1CqIWMWjEk0SintaLyITh4GtSzo2\nAdUJJ4nGP60TkY2XbVzEYyOa2ObYxoFWiCikcHJCCsimiyaZzKw7JglMTZQiampOR0rTArId19SJ\nomxRaN0at6qykrhOEExE6SZUk4u2Skxz6w/UCmn+wqXKxp8LZvXOY9qrtNM9K8eriEJd9LyBhV7T\nVuTsyYMAgBtXPzx87+79b6j9TpkFzIWlWqledu2LwioTUBKJGV5E1J+O44Ycem5VFEK6cfXD+Aiu\nLH2/jDpx1QkLKBdXnbAS9kQ5JnJJaCFVCcX0O2UCsxFWSMZhBTfQAREB4bp3JgIyLXNUXFXOkKru\nYJOiGhfx5HgRUW+6X9tgQz0Fm7RKPgRkcj6VuJoSVZVwxmELeRBLFFJgTQipaQHVoRKXT1GNs3CK\neBHRyqkFbF6302jFcBPxEXSFdP/ujeK5opgEVMdoPctEVTWuMpmnqhLOih0vqCsbOV4tkWq+QwfV\n3IguxbIkgpIKKW+MbRETUO6sqLpnkntQ9ALmghp1qeeiOrJpLdByHTXSnTO1Sk2hahi5yFT/Q1Fk\now3zpcWVpe/Hgo1o6hh1q5eKKkX7kRG7kOpwIbLDC6cqj4kB32PSKlG1mUYdC20WUh11DS+Gyd4q\nYpgrGocJYJGIiOh5APMA+gAWmfkK0xOOq5CqyBvq0sLkstddJ+aHiy46lugaZt7n4qQxC8lX9+LQ\nYAgwF1H3pUkrUCWazet24onGauGHYCsWmhJSTH3uySOM1bvimCPZv3HK2wa9OsGMI1IRMYD7iYgB\nfJqZt7k4uW8h+RSQ7oThwkVxpTcZrX/uLTMVlolw8mmAO5Wlx41URFcx84tEdCaAB4joGWZ+qHgA\nEW0FsBUATjvn1NrCfEagacry1O3FaXJG3nSy8simtcte123WkwTCrJrAzu91mZju3v+GVs2nVUHM\nek9IIrodwCFm/quqY07d8Fq+6GO/Ky5TRygxdc90ODR1LgBg7tgeAO1b+lL30KiyVFLrdOfl9zxm\n46ySQkSfA/B2AHuZeVPJ5wTg4wDeBuBVAO9l5u+qylVaIiKaBTDBzPODvzcDuEOn8rFak5CUNcqY\nhVXV/QOqo8uO3nfppLVH7gLwCQCfr/j8rQA2DH5+BcCnBr9rkXTnzgJwbyZSTAL4AjN/re4L/aM9\n6+AZ40CxQS0N/Jrz51VPNrZJWNIxVZWoQri4mfkhIrqg5pB3APg8Z92zbxHRa4joHGb+aV25ShEx\n848AXKZTWcC9UGwak23GNwl1g+9ikq/RzrPJNm4gPnEV61NlpYAT/69u7+TXrpnll1+pz9372ONH\nnwRQTNi7TdMJthbATwqv9wzesxORCarEvk03gPx8rsSk8lbVPWUlq9RVwgLitlomXT8VL7/Sx3fu\nW1d7TO+cZxcsx1ZU8p7SaeBHRAsczQ0tYiomlZWpoy4/kc4W7qo6tMFq6bjTq2AwjvOi03qVsAfA\neYXX5wJ4UfWlaLaH+9pXMurKBeRiMhWPdFLRRWyENlqtqq5fHQxgSW0UbNkO4ANE9E/IHAoHVOMh\nICIRlTX2nBAbt0ItjKzaaZrjQ1ixCKqOzBLVj4lUENEXAVwNYA0R7QHwJwBOAQBm/jsAX0Xm3t6F\nzMX9O5Jy/YTMmiHs3zjl7ObUCSwETXqWVNYKMBNWXTcwdPevDAZwHHYPNma+QfE5A3i/brleLVFs\n3YgiJpOHEppYH2YiLFNRxXK/gEa6c0Z4D94Ye/9cl1iX8NuOr8q2dAPxCIoBHNdcXdMU3sdEMQ58\nfc0bxbZKWWd8pSsowM09ko53GYx+lyzRaNw5Vx4lwP/T0JdDIY/FHRKd2N5VoYddWikdhxEzcDxO\nDTXjnXPlUQLsrZaNFXLh1pauWm4qoIluiCxX3T59jyuhXzoXGh4vi9hWTi0oj5GMLeYvXBr+1LF/\n45RIHCpnQkz7/UNsEah6EFTdq6rrld8Pl93mbExEtT+h8GKJDh6bwZmOy6xyVBQp5t4pe19Vdh0q\n0avi0sUaMks3VJbumsiqe5JPW8jHRIjWEgWbbDUN2KErJheu7Fg9crqY5Hp1tZC4VkwCHWWWKM7V\n/0FE5CLijY6Y6r4/roQUTB2mk/AMQt/P6MOaaJb9mCIRU9nxUnzF7HaJaTbxUPu6qqxSHckSFfAV\nd00iJp8Caoq2CaaOYU9BFEaY0E8iaiZwYZmY2tp18yGYuqd/E5sXTcnWzvVCV6OU1nfnqrAVTggr\nZBJU3lQwK3a8IIr4U0YIsTEnSxRt+Fwbsbga/5gG7rARUPG37ip51zuFJXTOEqkClYQgBrFIy5eu\nyDbd3iARTXxdu2SJGsdENLEsIK1aipPjQlRtI/POdcgSqQKV+EQinljEIkFlpQC5qIC4vHR6Lm7C\ncY7zme+tVk16x7oUQF1lpYD6DXkxJNkym2xFtydbfQmqS+IpQ2KlAD1RAf6EZbONJbNEXerOFUJm\njfbFbQXVdeHUIbFSgN3WcRNc7AFjRncdC3XhkXQEpSsena0Esa2sdoFUUIA/UUnc7FI6Z4l0kVik\nutQd0rQd4yiWnJgyD6osj2kItM6OiapcqyZduaqA6MUGVBRUKNGUNei2ZA9vgiOb1iZLpCKPO1eG\nK8eCrqDKPk+cjItJcsl2B10hMYClLo2J+jQ1TGoFAP0VhQ+dpE5ezsFCmb2ZE/Ga733iYvcnq6C/\noLiUx6cBAAcfuXRZHWNC+T8A6B05kcS5Dkl6zd45r83+uEtdnitLRERbkCXy6gH4DDN/dOTzdQD+\nHsBrBsfcxsxfrStTJCLVictYJpwGKTaEssYqaSi+qatDrALzQX92Gr3D8pl52+3hRNQD8EkAb0EW\nvP4RItrOzE8VDvsjAPcw86eI6BJkoYUvqCtXkilPcuLlTB3DxJrdqqK9U/YsnJhzV76O63eYbvLV\nPcP3yrq2Vc9v36vKDz23SnRt5qSeOWGW9BU7XsDTguOYCceXrB+Arwewa5BzC4PA9e8AUGzLDGDl\n4O9VcJQVQnLi1hDTspequlQlFq4ixs2DUnRiLCzZByopS+I1mk7ydgD3E9HvAZgFcK2qUImIJCdu\nnFBiMJ04zMcIo0/oMgeM7u7cKoFJxRXbivsyGITjS8ox0RoierTwejRTniSJ1w0A7mLmO4noVwHc\nTUSbmLnSIyYRkSh7GBFtBbB18PLoczffukNQdhOsgRd3hibZFug1/zNaF9HWaC/EcV0yRC5TwTzR\nPkWmPEkSr5sAbAEAZv4mEc0gu1Z7qwqViEiUPWyg+G0AQESPNpFSXUKqSzmx1UV1DIOwaO+dewTA\nBiJaj6wTeT2Ad48csxvAmwHcRUQXA5gB8H91hUr6RMMTE9HU4MTbNSufSFiRrZ2j2h91GbwI4API\n7P/TyLxwTxLRHUR03eCwDwF4HxH9AMAXAbx3kLeoEkn28EUiyk/cA/A5Zn5SWeNEwiEMwqJ6TKQu\nJ5vz+erIe39c+PspAFfplCnyGZadWIFO2nPfpLqU06q6dC7u3IhHJCipLuW0ry7UrWU/iYRrsvxE\nSUSJhBXJEiUSFmQu7iSiRMKYbCtEyk+USJjDblzcPkgiSrQCRwtQvZBElGgFDGBxKY2JEgkrOjUm\nmlwxy1MrT3dWXm9BvdXYJ/0Z+5vXp2zLQ4+zrRD9aesitehN97W/0z/azBjk2E/27GPmM+qO6Zx3\nrnfG6djwG7c4LdNFAEBdXASBz/f/LO1bBwBR7PiNjeduvvXHyoO4Y5YIWL55zMUGOtOEuabnsqGt\nmflipvNjIleCakJIJgKqE02+u/TwoSwAyezgdRt2k8YEg7plier637aC8iUkXfFUCUe6Jbt4XJOC\ncpkYumk6F4tb0khMBeVSSFLxSKzNKMXgkQ8+ez4A4OrBe8UgkqpY2LZIr23MAuMujomK+BCUrZAk\n4jGxNlUB9s+ePIiXFldWHudDVFXXsS7JgG5ZzYmL0O/ymKjInGBMIBVU3gB0xWQS4thEOMWA+h/B\nlTh78uDwvdE44XVZHHS6frrJkKuuna24ALcCYyCJaBSJmIATN0IiJqBeUKbxwU3jupVlprBFJai6\n61X10HHpyvcGZ126GAm+YmFu/QFRd8XGOvkOrp9bDkmKl7pMFbrB9qUZ8Eavl2sPZBMwOuhY0EFq\nlXIkgqprKDoNQscK1eVKysdDv1DzXVuqrJQqSVdogcjomIvbFKlVKqLjkNBtLCbduCoh1R3vg7pu\nXztEczJLS0lEInStUpEqQbnMDSuhrntXdpxvfLvQbZC635mzoPYxEp2IckysUpEYnrZVVil0orGy\nB0QIYelOtveTJdLHxiq5OK8LcsFMjbyOjbr/2cf1N1mtkiyRBbZWSfdcPtg/yNk666X0E/gYj7ns\nDpqunXS1dk6SsI6IfgtZihUG8ANmHo3XvYzoRRRT/z00OgKRltekZbRaze9gTCRJWEdEGwB8GMBV\nzLyfiM5UlRuliLoqHNcikZ6zCSG52A7D9mMiScK69wH4JDPvBwBmrkypkhOFiLoimtUzrw4XoHYJ\nVwnZBCsWVEm+JAnrfh4AiOi/kXX5bmfmr9WdNJiIuiIcIHva56u4Y0THGuncN4l4pOsemQFWr51T\nJfmSJKybBLABwNXIcnH91yBT3s+qCm1MRF0STZEQXbQYcCmgHAdr5yQJ6/YA+BYzHwfwHBHtRCaq\nR6oK9boY6dBzq4Y/XaRNAnJZV5WAVu88ZrCNhcBL9T8CJAnr/hXANQBARGuQde9+VFeoF0vUP9rr\nrHCAdolHB8k91d2KoYWlJapKWEdEdwB4lJm3Dz7bTERPAegD+ANmfrmu3CgcCyFpc/p619h46iTW\nxwp24p2TZMpjALcMfkR0QkRNC0W6di4m6sRTZ4G8Wp5R0oqFZonBwhQbpv22N7eYigZoWDhFurQp\nr3c0u9BNLwKNQThV5Mt+Yl07Z2ptcrzHBHTUnfOBSERE9DyAeWQDrUWFL35IfvF9i6lMPHWBQBIZ\n0QtnlDGwRNcw8z7Jgb0Fxuqdx4a7S2339lQhEY/q/XEVl4l3NErhFKA2WyJT8gte3KrtQlA64lER\n436fOlxOHUiX44QUzhBG6y0RA7ifiBjAp1Up0yeOHF/2uipoiE53TxIgMUcSYacuYEgIq+VrXs10\n3VoUwlkGAS23RFcx84uDZeEPENEzzPxQ8QAi2gpgKwDM9E7Dih0vAACObFq7rCCX1snGhXzj6odr\nhVR1PlMh9ReySx3CkpigGxGoEdG12RIx84uD33uJ6F5kS8ofGjlmG4BtALBq6iwGThYQoL45VZFo\nio0vt0qjDToXla44ckwF4nN1hk+huMQqdt19gmMY7bVERDQLYIKZ5wd/bwZwh+p7JgIqo0xUZY12\nbv2BUlHFKIwy2iKWkFCLLdFZAO4lovz4L6j2VyytOOWk91xE2QTKG1uZsMpEFXo9X+8IMBeBWGII\n4mJEW0U02AV4mekJXImnDqm10i3HJYcCLllorWhGaLMlMqYJAZWRukbhheN89Uibx0Qm9GcomICa\ndM2G+h+r8CUcX8upckfQE9IvdNESmeJKCFVudlfo1HPhoqwFrN51sovfhqaju1bRxIp1irRXGp2I\nXAso/9uXkExoMitDzItytUmWSIbNE7ooQFvRuO6qLU6RuNxYrIsOvpdKEXd07VzTxDZGUZGsix6d\n6s71FsLa3dCeqTKWBuvf58/zkxupilgyU5ShPQ2RunN+kOZZDT3RqsJWMLar2JsQk9U94I5ZIgDL\n9hO5wDQpsc4xNug0kFCCkZTpUkxV18R4Hq+LlshUSK6zeOti0pBUwjh8aBEAMKshIFf/T93WkLIs\n5jZCKhNOlWh0PbGdXLEgwYdgfO0nUmHa+FxbFp2M5WVbQnSskk/RnETXRGSbeFj1ZK/LjTqasbvs\ncx9IN/P5nphU/f8SqgQkzfReJqT9G6fMhdS1MVF/ptyf70I8RSRC8iUYHYoB7ZvKCuF6T5WrhNTF\nh6u2oBxYIkmSr8Fx7wTwJQC/zMyPlh2T00h3TupyNs3WDZQ/3WMQUFsoE48rj6ZSUIJNeQR7SyRJ\n8jU47jQAvw/g25JyvYpIZ77G1mNVZ5US5biyOjrkbULbQ8dOHAuSJF8A8GcA/gLArZJC/XTnpv1a\nnyraGL63aWwin7rEaELcfkykTPJFRK8DcB4zf4WIwolIiq+5m5jElA/wn5m8cvi6qW6mqXctVgSW\nSJUprzbJFxFNAPhrAO/VqVcwETWx/qvYiJoSlMQrlh/jWkw6LvY2iQfAYFOe8ihVpjxVkq/TAGwC\n8OAgHMLZALYT0XV1zoXGRBR60aRPN7OpO9lGTLELxsf9djAmGib5AvACsiRf784/ZOYDANYMz0f0\nIIBbg3jnetP94KJR4VJUuQhMxKQjIB95VX1RVwfTtmHrnRMm+dIm+IqFWHAhqlFBVIkqtHB0PGM+\nVsQbi9zBPJEqydfI+1dLykwiqqCs8eoKqyiWlxZXnvSezrmrkDZI00WfroO+mIqS3Li4vZBEpIHP\ncVVMwvGJTZ06teynK7gQlcvuWgxZHrzuLk6WqDl8DGolSLuA4yacRs7TtQWoIZB2ccrCDfskF8xh\nYbpJV8KJLzWKA5Ilco8LV27TopLUoQyXwimGE2sTyRJZ0OS8R1XGiabOVUaMDoIQJO9cDTFMDtZR\nVT8bcYUU0JFNa9tnjWTLfoLgZxX3qzM4/MTFJ14vRKFV5xysSAPdm1k86b3+4WxMdPCRS8Xl947o\nZZM4dCkweUT4uL5ofXaOw0flJ/DFXepDCF2zRExjKxwJpf97Hr2zJyujd8Rdferoz05n54tBTApo\nKU4ViVq6dEvtiVKPYWLNbvvaleCiexMiuOPSvnUAILouNv9jHjDfhqa7ek9LDmpz9nDplloTQg2Y\nq7LtxYDtNbEKBjKgGMc8prFTm71z0i21Q3pH2+dRqqpvk+KK8ZrlgopBTG0eEym31AIAEW0FsHXw\n8ujjf3vLDvvqOWENgAoXQOOkupSjXsLR8hULtVtqh29k23C3AQARParYYdgYqS7lxFYX0YEttkSq\nLbWJhHeykFlxqkjSCR9uqSWiKWRbao12ACYSNuR7iqp+QqG0RFVbahVf26b4vElSXcppV10YoH4D\nNTGAmOM0kYlEkbnTz+PL3vzB2mMe/vKtj4UY53V3WUGiXTCASB/4SUSJ1tBmF3ciEZzuLUBNJFzD\nHK2LO4ko0R7i1FASUaIlMED9OFUU34rHRKIKVvwIIKItRLSTiHYR0W0ln99CRE8R0eNE9B9EdL6q\nzCSiRGugJa79UX7/xLaetwK4BMANRHTJyGHfA3AFM/8igC8jS/ZVSxJRojU4WPYz3NbDzMcA5Nt6\nhjDzN5j51cHLbyFbK1qLlzHR5IpZnlp5euln/Wn193vT6vUdK6cWdKvljIPHZrS/0381+07vVHm9\n+0fr95L3FDu6ewv6Y4iqpNWA+t5J7tsoK6cW8L9P7d/HzGfUHUcsWoCqSvIl2tZT4CYA/6Y6qRcR\nTa08HRuuv0V8vMus4j5D+eacqX0GDAO3zF4q2gxdiSpKkGpjX3HXqyrkb919cRVGbPO6nbjz8nt+\nLDrYPsmXaFsPABDRewBcAeCNqpNG4Z2TbNeWxoPTFUTbKPufi9emrOGXZuweoQnBlCG+XzJLpEK0\nrYeIrgXwEQBvZGZlBJcoRFSGqbCA8Fn5msZEWLrlhYddrJ2rzZQHDBMffxrAFmbeKyk0WhGVIQ0w\nksSlFlbdcbFia4mEmfL+EsAcgC8N8rbuZubr6sptlYjK0AkwEipbRCy0+n90FGNBlSmPma/VLbP1\nIqpCN3pP1wXWCtLauTio816Nk8BcZvGT4tupQ0tx7oXonIi6Qhu8lLnQn5Ac3LWA9m3EJEhjrFYo\ndkysJIG7ZYn60ycaZYxRPYsk8TSLVTezq9vD6xppSIGZhgc2EdDmdTvx4LPZYuAxTAIpwnqMFvFW\niKDduVACa9L6jDae/HWIMUuoeSJnTo4uWSKThYij+BBY09ZH9blvIUmy8RWPcS0opx5CZqBLYyKg\n/obYppfUFViT4gHkjce1VbK9ri4F5cXFHqeGwnTn8hvkI1fr/IVL0TszXGF6/U774YTywWKTVd3X\nHFWnvHMqfCY6LhOQqXUybUijlqXYqEytjo1gJO+7FFXd/28MI61Y8J0hXNf6mAjLdGHr/bs34vBC\nlvh4VlA3k2tla33jF1UHx0Q5sYnHpCxf4nJtXVyi+5CxEZWYLnnn+kd73sUDNDfP5KI7uDTIKK5z\nXVz+f1V5XFW7W4voWCubMVUpzEA/zrQQrVz2E4PjwHWOV1f/k27S49HjoxZVlyyRL2IQj4qqOh5Y\nVf+5DrbZwXXKbkpUShhAv6NjIhe0QTwqekf0v+NLLCt2vDDMCm5SB6mwdJ0VSpIlMsfk4rdNeD4E\ns2LHC+LPpKICzK2VlajSmKh5JDcoJqHlDdFnV60OHes0Sl5nna4fYHD9u+rijpkYhbZ/41RQIQF6\nVqmITkw7fThNtvpA18Nj4nZXCc2HyEIKCbCzSjmm1qkSBrjN3Tkieh7APIA+gEXb5LKhNrVVnddm\nTsuXNYuheweYW6Ucp9ZpDBwL1zDzPsmBvel+8N2fOuvVfIiryPyFS1jKr5ymJsbBKuVYWafkWHCL\n7tqrquNDiMtk23wMQgLsrVKOqXXiljsWGMD9RMQAPj0Sad8LTYR8KjuHZF2XNLpoHbpbNkILCXBr\nlXLE/xOzk8lWItoC4OPIIqB+hpk/OvL5NIDPA/glAC8DeBczP19XplREVzHzi0R0JoAHiOgZZn5o\n5ORbAWwFgFPOsO8G5Y25qfhpNhvjmlgnaELe4Ovmi3TLCgrbiaiQ5OstyILbP0JE25n5qcJhNwHY\nz8wXEdH1AP4cwLvqyhWJiJlfHPzeS0T3IkuW9NDIMdsAbAOA6XXnsatdkpLGrSO0GMSi62iwtUBH\nNq01ElIUwhnAzC68c8MkXwBARHmSr6KI3gHg9sHfXwbwCSIi5mqvhlJERDQLYIKZ5wd/bwZwh07N\npY3PVGyuYxX4sCz5sp85DQG57L5JhRSTcEZh+3kiSZKv4TGDAPgHAPwcgEqnmsQSnQXg3kGE/EkA\nX2Dmr8nrLce32EzPJ0FlXQ5pOKR8jX2qhBSzcHLmsf++f1+6Z43isBlFpjxJki9xIrAcpYgGpu8y\n1XFNoiO2JoViSxOOg+I4qQ3iyWHmLQ6KkST5yo/ZQ0STAFYBeKWuUD8hs466329jgq6AQq2lC+F1\na5OAHKJM8gVgO4DfBvBNAO8E8PW68RAQYJ7IZUPVFWRMC06BcKsRuoowyddnAdxNRLuQWaDrVeW2\ncrI1JzZRSEniCYcgydcCgN/UKbPVImoTk0eyHsHqXUlA44b3rBBAey2GC3Kr89OLAlck4Y1GLFHV\n2GVcxZW6a93CW0D74lxOlZesTFxtFlYSTzdpxBLpLNhsm9VKwkl4EdHKqQVlxgPdbQYxWa0knEQR\n75ZId7uBrdXyKawknkQZQVzculkSdFKx+PQKFjeQJUElchoXkc6K65iX7ehucV6cIqPvxUh6gCzH\ni4gOHpsRiyVmobQZn+HAnD8I7nNbXNNEmZ9oHIQy2ojzQCXz58UTJyDGuHttJGhqlbbfIEkjzMdz\nhw8tAgBmA0dBqqPsnkkX+bb9Xtrg3RKNw8XVEYspTcWSGKXY7bZJVt1lq9b4fqJYcSWUKjE8+Oz5\nAICrA4mlijrxSgUG6HtOx4lOreL2LZQiN65+eNnrZyavLH0/Nu7e/4bh31KBAXZWrO34sUQLXOsG\nbdrNK30C+hJQm7hx9cPLhFSFakVKEZ15vjbix7EwQ62cDym7yaPCKms0o8KSNMIu4jrmRSyMfXfO\nth8uyQxe9TQuiuulxZUAlguszRYrZ/O6nVoT6OMopLEXkS90xXV44dThe7m4yixWaGE1YUXHTUhB\nRDSuXhqgWlzFYGajT+6ixYpRWIl6GtkengD6C9mlLguvrBpnjQrLl6iaHMuNkzVK3TkPlM2R5RFQ\n5344MXzA1Dky6oQ1LtZqXISURCTA9cRxXRbtUMIK5VEMnQzOBd5iLMRKkyspinNlCxcNgmj2Tj4u\nr1NVF3hUWCrPYJssVrJENcQ0wRZqCVJxrizfTzSabtJk7FgnKmC5sFzMYcWQjiZmvHfnQoop5vV7\nLh0vOpbKNDug9NxdxI937tXyyZ7pAAADP0lEQVQZHH7i4mXvEU54qHyT5wLSSWfim/7ENDABHFhx\nbvaGKIW0GQdHyu7NLA7/vnfkvqho6p61GdEVUuW5lJLfTF83JhdPDPRXjLxxPEg1ACy/3kVBlX2e\n0EeSKU+S53IZvVMXMHvp08qTh0rf6JqyrtlojZb2rcveX7O7gRpVU5YjZGLO3/lC35smkDyCJHku\nl5HHnZOmuDcVU4gbZDKWmVt/YNnO1ljHEV1o8D6QiEiS57IU6XJ53Uk36c3OXcw2K8pNRaP7uS9h\nJWH4RyIiUQ5LItoKYOvg5dE7L79nh03FHLIG9/kcxmuxBl5dClrEVBe3masbRiIiSZ5LDBLMbgMA\nInqUma9wUkNLUl3Kia0uoetgg8TWD/NcEtEUsvR72/1WK5FoD5Ls4aV5Lr3XLJFoCaIJgrI8lwq2\nmVXHC6ku5aS6OIIU2cUTiYSC5P9MJCxxKiIi2kJEO4loFxHd5rJsg7p8joj2ElFQVzsRnUdE3yCi\np4noSSK6OWBdZojoO0T0g0Fd/jRUXQp16hHR94joK6HrYoozERWWB70VwCUAbiCiS1yVb8BdALYE\nPH/OIoAPMfPFAK4E8P6A1+UogDcx82UALgewhYiuDFSXnJsBqNeIRYxLSzRcHsTMxwDky4OCwMwP\nAXgl1PkL9fgpM3938Pc8sgazNlBdmJkPDV6eMvgJNigmonMB/DqAz4SqgwtciqhseVCQxhIrRHQB\ngNcB+HbAOvSI6PsA9gJ4gJmD1QXA3wD4QwCtjmrjUkSi5UFdhYjmAPwzgA8y88FQ9WDmPjNfjmzl\nyeuJaFOIehDR2wHsZebHQpzfJS5FJFoe1EWI6BRkAvpHZv6X0PUBAGb+GYAHEW7ceBWA64joeWRd\n/zcR0T8EqosVLkWUlgeVQEQE4LMAnmbmjwWuyxlE9JrB3ysAXAvgmRB1YeYPM/O5zHwBsrbydWZ+\nT4i62OJMRMy8CCBfHvQ0gHtCLg8ioi8C+CaAjUS0h4huClSVqwDciOxJ+/3Bz9sC1eUcAN8goseR\nPfQeYObWupZjIa1YSCQsSSsWEglLkogSCUuSiBIJS5KIEglLkogSCUuSiBIJS5KIEglLkogSCUv+\nH0qOJ52b2wRmAAAAAElFTkSuQmCC\n",
"text/plain": "<matplotlib.figure.Figure at 0x106b58550>"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": true,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "python2",
"display_name": "Python 2",
"language": "python"
},
"language_info": {
"mimetype": "text/x-python",
"nbconvert_exporter": "python",
"name": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12",
"file_extension": ".py",
"codemirror_mode": {
"version": 2,
"name": "ipython"
}
},
"gist_id": "7bd3734a6bc7752163b2d0762ded8af7"
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment