Last active
December 30, 2015 08:09
-
-
Save olgabot/7801024 to your computer and use it in GitHub Desktop.
Pandas clustered heatmap
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "metadata": { | |
| "name": "" | |
| }, | |
| "nbformat": 3, | |
| "nbformat_minor": 0, | |
| "worksheets": [ | |
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "import pandas as pd" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 1 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%load_ext autoreload" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%autoreload 2" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 19 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Simple clustergram example showing clustered heatmap defaults" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "import numpy as np\n", | |
| "import string\n", | |
| "\n", | |
| "shape = (10, 20)\n", | |
| "np.random.seed(2013)\n", | |
| "df = pd.DataFrame(np.random.randn(*shape), index=list(string.lowercase[0:shape[0]]), \n", | |
| " columns=list(string.uppercase[0:shape[1]]))\n", | |
| "\n", | |
| "# -- Add some structure in the matrix so we can try to be correct -- #\n", | |
| "# Add 5 to rows a,b,c,d,e and columns K,L,M,N,O,P,Q,R,S,T\n", | |
| "df.ix[0:5,10:20] += 5\n", | |
| "\n", | |
| "# Subtract 5 from rows f,g,h,i,j and columns A,B,C,D,E\n", | |
| "df.ix[5:10,0:5] -= 5\n", | |
| "\n", | |
| "fig, row_dendrogram, col_dendrogram = plotting.heatmap(df)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stderr", | |
| "text": [ | |
| "[autoreload of pandas.tools.plotting failed: Traceback (most recent call last):\n", | |
| " File \"/usr/local/lib/python2.7/site-packages/IPython/extensions/autoreload.py\", line 229, in check\n", | |
| " superreload(m, reload, self.old_objects)\n", | |
| "AttributeError: 'NoneType' object has no attribute '_cache'\n", | |
| "]\n" | |
| ] | |
| }, | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "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\nbOD2M888I4/HU+u+PB6P2rVrp/79+yszM/PkNbqZ40O4CFi3bp2GDx9e6/p77rlHc+fObdC+Kisr\nNWfOHP39mf7zAAAJ0ElEQVT617+utq68vFxLly7VW2+9pYKCAnXq1EmjR4/WxIkTFRMT/Lc2KipK\nHo9HtT38Ho9HlZWVgdvFxcW6//77tWXLFg0YMECzZs1SfHx8ve2tatObb76pgoICdejQQRdddJGm\nTJkS9IKXpI8++kjx8fHq3bu3JOnbb7/Vf/7nf2rLli3KycnR/PnzlZSUFKh/8cUX9ZOf/KTeNhxv\n1KhRda73eDx6++23G7SvDz74QA8++KCWL18etDw5OVmFhYWB2+PHj69Wc7zVq1fXGXaSdOGFFwZ+\nPvG5dOLj6PF49O677wbVPPnkk1q/fr2WLl0qSUpMTFS7du0kfffYzps3T9ddd12gfuTIkfW2qbCw\nUNu2bdO8efPUv39/vfrqq3rwwQer1d11110aN26czj///Dr3dyK/36+oqLrfpH/zzTdav369evTo\noR49etRa99lnn2ndunU6dOiQ0tLSNGzYMPXs2bNa3e23367HHnsscPuZZ57RtddeG7j94x//WK+8\n8orV/aiTwUmXmppqNmzYUOO6X/7ylyYzM7PB+yopKTEej6fa8sOHD5vzzjvPdOjQwUybNs3cdddd\nZurUqSY9Pd3k5OQYn89n/v3vf5sXXnjBGGNMv379jNfrNXPnzjU7d+40FRUVpry8POjf8aZPn256\n9epl7rjjDtOzZ09zyy231NvWuto0cOBAc/jw4aD6oUOHmr///e+B21dccYUZNGiQefzxx82QIUPM\njTfeGFSflJTU4N9blaeffrrav0WLFpk5c+aYtLQ0k5CQEFTv8/nMnXfeacaMGWPmzJljKisrzQcf\nfGBGjhxpEhMTzU033VTtGCe2q23btnW2qWvXrqZbt251/jvec889Z5577jnz/PPPm+eee84kJiYG\nfq5afqLBgwebTZs21dimTZs2mcGDB9fZxtps2bLFdOnSxVx66aXmtddeq7Hmr3/9q7n88ssbvM9P\nPvnEzJgxw3Tu3Dlo+e7du82VV15pzjnnHDNt2jTz6aefmrS0NNOhQwcTExMTeG4fz+/3m5/97Gcm\nKirKnH766eb88883mZmZJioqykybNs34/f6g+voeu1Cec3UhgCPgxRdfNO3atTMff/xx0PKbbrrJ\ndO/e3ezYsaPB+6otgG+66SYzZswYc+TIkaDlRUVF5tJLLzVjxowx6enp5g9/+ENg3ebNm82MGTNM\nRkaGGT16tFm6dKk5evRojcft2LGj2bNnjzHGmF27dpmuXbvW29b62nRioKalpZmSkhJjjDEHDx40\nMTEx5vPPPw8cs0uXLkH14Xgx7N+/38yYMcMkJyeb66+/3uzevTto/eTJk03fvn3NnXfeaXr37m2u\nvPJKk5ycbO655x6zf//+GvdpG8CN1ZD9p6enB93OyckJ/FxZWWk6dOgQ8vFnzpxpOnfubCoqKmpc\nX1ZWZjp16lTnPr755hvzu9/9zvTr1894PB4zYsQIs2zZsqCayy67zFxzzTVm1apVZurUqaZLly5m\n+fLlxhhjVqxYYXr37l1tv0899ZTp3r27yc3NDVqem5trzjzzTLNw4cKg5QRwM/X888+b9u3bm82b\nNxu/32+uueYac/bZZ5tdu3ZZ7ae2AO7UqZPJz8+vcZsdO3YYj8djnnvuuRrXV1RUmNdff91MmjTJ\npKSkVPtDYUxooVJfmzp27Bi0LCUlJdAjef31101GRkbQ+tatWwfdbtWqlVm9enWd/2pz+PBhc++9\n95qUlBRz9dVXm3/961811nXs2NHs27fPGPNdD8zj8Zi1a9fWeb+Pb9dbb71lkpKSGtyuUDTksWjd\nunW1P4RVCgsLTWJiYqPakJSUVOsf7+Li4mqPnTHGHDt2zLz00kvm8ssvN7GxsaZv377m/vvvN6mp\nqYHf+fFSU1NNaWlpYJ+xsbGB54vf7zdt2rSpts2QIUPMq6++WmO7Vq5caYYMGVLtfhzvZAcwH8JF\nyLRp01RaWqqLL75YOTk5ysvL09q1a9W5c+dqtXWNCZaVldW4vLCwUBkZGTWu69Kli+Lj4zV9+vQa\n12/fvl3vvvuu3n//ffXv319t27atVlNZWRkYGzXGqKKiotpY6fHjlA1p0/HjpJKUlZWlZcuWaeLE\nifrTn/6kH/zgB4F1e/bsqdau0tLSoPG5muzYsSPo9tGjR7VgwQI9/PDDGjlypNavX1/jWGCV4uJi\ndezYUZKUkZGhpKQkjRgxos5jpqenB7WrXbt21dp5YrtOtp49e+qNN97Q+PHjq637+9//rl69ejVq\n/16vV2+88YauvPLKauvefPPNGsdnO3XqpPT0dE2ZMkWPPPKIzj77bEnSE088UePzv7y8PPC5Q2Ji\nolq3bh2oq+3zjK1bt2rkyJE1tnnEiBGaPHly0LK6nufGmKDPRcKBAI6AqkA966yzNHToUL311lt6\n6qmntG3bNm3btk1ScHhde+21dX4A0rVr12rLzjjjDK1evVqjR4+utu7tt9/WWWedFbTswIEDevHF\nF7VkyRIVFhZqypQpWrduXa3ffAglVOpr05lnnhm0bN68ebr88st14403Kjo6Wu+9915g3Z///GcN\nHTo0qL5169bWQda9e3f5/X7NnDlTgwYN0jfffKNvvvkmqOb4x+LEF6Qxpt4/PPn5+VZtsnX8H+iG\n/jH85S9/qZtvvlkej0c/+tGPFBUVJb/frxUrVuiWW27RI4880qg2/epXv9LPf/5zVVZWaty4cYH9\n/+Uvf6l1/3369FFubq4++OADdevWTZ06dVKbNm1qPUYo4VhZWVnrPpOTk+X3+4OW1fc8r/pjHC58\nCyICunXrFhSoxphqAdvYHtHzzz+v//qv/9ITTzyh8ePHB14Ar7zyim677TY98MADuuaaawL18fHx\nOuOMMzR58uTAp9MntunEF/HJbpP0Xa/5iy++kNfrDXrh5OXlqU2bNjrttNMCy9q0aaOioiKrNnXr\n1k1S9ft6vOMfi0g8drZCbdP8+fM1e/ZsHTt2TO3bt1dBQYHi4+M1e/Zs3XnnnY1u1yOPPKLZs2er\ntLQ0aP+//vWv9atf/arGbfLz87VkyRItWbJEe/bs0ejRo/X2229r27Zt1d49hXK/ExMT9dprr9V4\nbGOMxo4dq6NHj4Zyd8OCAG5G5s+fr/vuu6/aC6CmF9iJT+aahCNYbNpkKykpSUeOHGl0G1sSn8+n\nDRs2qKCgQO3atVNOTk6NQ06N3f+BAwcC+09JSWnQtu+9954WL16sZcuWKSYmRtdcc40eeuihRrUn\nUs/zUBHAzUxhYaHef/99FRQUqH379lYvgJbUJjRdJSUlWrFihZYsWaLXX3/ddXNOKgIYABzhWhAA\n4AgBDACOEMAA4AgBDACO/H/tdBztXtskVwAAAABJRU5ErkJggg==\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x10a2b0250>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 64 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Overwhelming example showing off all parameters\n", | |
| "\n", | |
| "Both `df` and `plot_df` are options because `scipy.cluster.hierachy` only clusters properly if there are no NAs. I'm not sure how to get it to properly ignore NAs. So what I did instead was have the user provide two different dataframes, one to cluster on, and one to plot. Because it's possible that the user may not " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%pdb" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "Automatic pdb calling has been turned ON\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 48 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "range(1)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "pyout", | |
| "prompt_number": 1, | |
| "text": [ | |
| "[0]" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 1 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%load_ext autoreload\n", | |
| "%autoreload 2\n" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "The autoreload extension is already loaded. To reload it, use:\n", | |
| " %reload_ext autoreload\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 14 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "import pandas as pd\n", | |
| "import numpy as np\n", | |
| "import string\n", | |
| "import matplotlib as mpl\n", | |
| "import brewer2mpl\n", | |
| "from pandas.tools import plotting\n", | |
| "\n", | |
| "shape = (10, 20)\n", | |
| "np.random.seed(2013)\n", | |
| "df = pd.DataFrame(np.random.randn(*shape), index=list(string.lowercase[0:shape[0]]), \n", | |
| " columns=list(string.uppercase[0:shape[1]]))\n", | |
| "\n", | |
| "# -- Add some structure in the matrix so we can try to be correct -- #\n", | |
| "# Add 5 to rows a,b,c,d,e and columns K,L,M,N,O,P,Q,R,S,T\n", | |
| "df.ix[0:5,10:20] += 100\n", | |
| "\n", | |
| "# Subtract 5 from rows f,g,h,i,j and columns A,B,C,D,E\n", | |
| "df.ix[5:10,0:5] = np.random.uniform(high=0.001, size=(5,5))\n", | |
| "\n", | |
| "# --- Crazy stuff starts here!!! ---\n", | |
| "# Set the df to absolute so we can show log scaling\n", | |
| "df = df.abs()\n", | |
| "\n", | |
| "# Add some NAs\n", | |
| "df.ix['c', 'C'] = np.nan\n", | |
| "df_na_mean = df.fillna(df.mean())\n", | |
| "\n", | |
| "\n", | |
| "\n", | |
| "vowels = ['a', 'e', 'i', 'o', 'u']\n", | |
| "vowels += map(string.upper, vowels)\n", | |
| "# print vowels\n", | |
| "\n", | |
| "set1 = brewer2mpl.get_map('Set1', 'qualitative', 9).mpl_colors\n", | |
| "grey = set1[8]\n", | |
| "pink = set1[7]\n", | |
| "col_side_colors = [pink if letter in vowels else grey for letter in df.columns]\n", | |
| "row_side_colors = [pink if letter in vowels else grey for letter in df.index]\n", | |
| "\n", | |
| "\n", | |
| "cmap = mpl.cm.YlGnBu\n", | |
| "# highlight the NA with white\n", | |
| "cmap.set_under('white')\n", | |
| "\n", | |
| "\n", | |
| "fig, row_dendrogram, col_dendrogram = plotting.heatmap(df=df_na_mean, \n", | |
| " title='Awesome heatmap example',\n", | |
| " title_fontsize=32,\n", | |
| " colorbar_label='powers of 10',\n", | |
| " col_side_colors=col_side_colors,\n", | |
| " row_side_colors=row_side_colors,\n", | |
| " color_scale='log',\n", | |
| " cmap=cmap,\n", | |
| " row_linkage_method='single',\n", | |
| " col_linkage_method='average',\n", | |
| " figsize=(20,10),\n", | |
| " label_rows=[letter+'++' for letter in df.index],\n", | |
| " label_cols=False,\n", | |
| " xlabel_fontsize=8,\n", | |
| " ylabel_fontsize=20,\n", | |
| " cluster_rows=False,\n", | |
| " cluster_cols=True,\n", | |
| " vmin=1e-4, vmax=1e2,\n", | |
| " plot_df=df, edgecolor='white', linewidth=0.01)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "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\njxo3biyHw6Ft27bpo48+0sGDB/Xll1/qT3/6kzIzM1W9evUi8xw/flzx8fHavXu3JKlOnTrq27ev\nmjRpoqCgIB0/flw7duxQRkaGduzY4faibIcOHVK3bt20Y8cOSZK/v7/i4uLUqVMnORwOZWZmKjU1\nVefOndPq1at13XXX6ZtvvnF5bIXt2rVLAwYM0IEDBxQVFaVevXqpRo0aysrK0rvvvquTJ09qy5Yt\nGjp0qFauXKnBgwcrNTVVISEhSkhIUGRkpA4fPqwPP/xQ27dvl9PpVFJSkjp37qzGjRu7PZbo6Ght\n3rxZkhQcHKy4uDhdffXVCgoK0p49e5Samqrt27drz5496tmzp1avXq2OHTt6PBZvHT16VP369dOW\nLVvUuHFj9evXT6Ghodq/f79SUlK0Y8cOmaap+++/X506ddJ1113ncp4zZ84oLi7Oev9WqlRJvXv3\nVvv27VW9enX9+uuvSktL04YNG3T48GHdeOONWrp0qfr37+9yvv3798swDEVGRqpz587WivlTp05p\ny5YtSk1N1ZEjR7Rjxw716tVL33//verWrVtkjrFjx6p///5avHixtQp77NixatKkSbHnc/feOHz4\nsPr376/t27erVatWio+PV+3atbVr1y69++67OnTokPbu3av+/ftry5YtGj9+vObOnasaNWooISFB\nLVq00O+//64VK1ZYK1InTZqk6667Tt26dXN77JJUq1Ytde3aVa1atVKtWrXkdDq1a9cuffLJJ9q1\na5eOHz+uW2+9VZ988om1gtUd0zSVmZmpuXPn6ty5c+rUqZOuv/56Va1aVVlZWVq6dKmOHTumffv2\nKT4+Xl988YWuvvpqj3OWxFfv7fbt22vmzJl64IEH5HQ6dfvtt2v9+vW64ooriox7/fXX9d5770mS\nQkJC3LYaKnh9q1atqq5du+qqq65S7dq15XA4tHv3bq1atUpbtmzR2bNnNWHCBFWrVs1qYeSJHZ8f\nBc6cOaObb75Z69atU506dXTjjTcqMjJSBw4c0PLly5WVlaW8vDw9/fTTCggI0NSpU0s8Hk/P5ctz\nHQDgIzYH3AAAAPgDbdu2rcjqy8JOnDhhVqtWzTQMwwwODjaPHj3qco7t27dbc/Tu3dvlmIYNG5qG\nYZjNmze3xv773/8uNu7DDz+09j/44IPF9h88eNBs0KCBaRiGGRAQYD7//POm0+ksNu7YsWPmrbfe\n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\nXUr9PL481wEAvkXADAAAcAk7duyYFXIahqHbb7/d68cWHusqYJb+Lxw+e/Zskd6trkLjgm2rVq2y\nVjoHBga6DV79/f01ZswYSfkh97333lvixaZ8oXBv6qCgoCL7RowYYa3uXrJkiccw6fvvv7dCEMMw\nNGrUKN8XewEKtz+YMmWK9u7da2M1ZXfvvfdav5NZs2Zp8+bNZZ6rcDuU7777zmOf8r/+9a/69ddf\nS5yzRo0a1s8XegG6i63g+Pfv3+/yWwsFVq5cWWKgeL4jR47ob3/7m9v9Bw8e1AsvvGDdHzFiRKnm\nL+xivLcfeughbdq0SZJ07bXXWp93Xbt21dSpUyVJZ86c0dChQ92u5i14fU3TtMJWV7Zs2aLXXnvt\ngmv+Iz355JMuLwhbYMqUKdb5NGDAgCLnhbd8ea4DAHyLgBkAAOAS9q9//csKO9q2batWrVp5/diY\nmBiFh4dLknbt2qW0tLRiYwoHyf/5z38k5be2qFOnjtux27dv144dOyRJXbp0KXLRtPNNnDjRulhf\nWlqa4uPjtWvXLrfjjxw5ojfffFMdO3bUwYMHi+xLTEzUk08+qZycHLeP37x5c5E+tAUrIQu0aNFC\niYmJkvJX7Q0YMMDlV/+///579e/f31qxOnjw4CItP8qD+Ph49evXT1J+X+4//elPWrNmjdvxZ8+e\nVWpqqhISEoqsNLXbVVddZbVzOH78uHr06OEx/MzLy9OaNWs0bNiwIr9rKb+NSd26dSXlv08nT55c\nLGR2Op2aOXOmpk+fXqSVjDstW7a0fi68cr88Kni/m6ap5ORkl+0lPv74Yw0aNMirYy/MMAxNmzbN\n5R+r9u7dq/79+1sBfIcOHdS/f/8yHEE+X7+3ly1bZvXmrlGjht55550iF+CbPHmydaHS7OxsTZgw\nweXzFP48GTdunPWNj8IyMjLUp08fa6V0RWAYhrZs2aJbbrlFx44dK7IvLy9PM2bM0IIFCyTltxZ5\n9NFHy/Q8vjzXAQC+xUX+AAAALmGF22OUZvWylB8aJCYmWqsO582bZ10Yr0BsbGyxx53fHqOAp1XN\n7tSqVUspKSnq3bu3Dh48qE8++URNmzZVTEyMoqKiVLNmTZ06dUr79u3Thg0blJmZqbNnz7oMv/bu\n3at3331XU6dO1VVXXaWoqChFREQoKChI+/fv1/fff69Vq1ZZgWK3bt00YMCAYvP8/e9/1zfffKPt\n27fr559/VufOndW3b1916tRJUv7K1xUrVljhcpMmTTR37lyPx3kxeQoC33nnHcXGxmr9+vX68ccf\nFRMTo3bt2ik6OlohISEyTVMHDx7Upk2blJGRoSNHjkhSuVuNPWvWLO3YsUP/+c9/9Ntvv+nGG29U\ns2bN1KNHD4WFhcnPz0+HDh3S1q1blZGRYQV75/dYNgxDEydO1EMPPSRJeuaZZ7Rs2TL16tVLISEh\n+uWXX7R8+XLl5OSoatWquvvuu0vsu9u3b185HA7l5eXp1Vdf1f79+xUVFWWtjjcMQyNHjixTv2Ff\ne+SRR/TBBx/I6XQqLS1NjRs31o033qiGDRvq6NGjSk9PV0ZGhgzD0JQpU6xVvN6499579dprryk5\nOVkvv/yyrr/+egUHBys7O1tLly61gslq1appwYIFpQ6wz+er9/bPP/+s5ORk6/7f//53q+9yAcMw\n9Pbbb6tdu3Y6fPiw5s+fr759+2rw4MFFxo0bN04vv/yyTpw4oY0bN6pJkyYaNGiQGjdurDNnzuir\nr77SqlWryvT6Xize/B66du0qp9OplJQUNW3aVDfddJMaNGiggwcPavny5crKyrLGPvbYY4qKiipz\nPb461wEAPmYCAADgkvTDDz+YhmGYhmGYfn5+5u7du0s9x/r16605KleubB48eLDYmNatW1tjDMMw\nP/zwQ7fzhYaGFhn72WefeVVHTk6O2b179yKPdXdzOBxmixYtzOPHjxeZo0+fPl4/vl+/fubhw4fd\n1vPrr7+asbGxJc4VExNj/vrrr27neeONN6yx06ZNK/F1KBgbGRlZ4tiRI0da49PT092O+/333827\n7rrL9Pf39+r1qVOnjvnll1+W+PzurFq1yporKSmpxPFTp061xr/55ptuxzmdTnPy5Mlm5cqVvTqO\n6tWrm++//77Lue68806Pjw0JCTHT0tK8/v1NnjzZ43y7du0q8+vTsGFDa3xJvHkt58+fb1aqVMlt\nrYGBgebzzz9v5uTkWNt69Ojh1fO9++67ZnBwsNu569WrZ65Zs6bE4/DWhb63nU6n2bNnT2v/8OHD\nPT7fkiVLrLE1a9Y0f/rpp2JjPv74Y7NatWpua/Dz8zMfeugh0zRLPt/t/PzYuXNnkd//7t27zY4d\nO3o8rkcffdTjcxb+jC98TpzPl+c6AMA3aJEBAABwiZo/f76k/BVo0dHRCgsLK/Uc7dq1U+vWrWUY\n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\nEZgBAAAAACgiMAMAAAAAUERgBgAAAACgSK3ZbDarHgIAAAAAgH2PO5gBAAAAACgypeoBALZbtWpV\n1SO0xNKlS5Mkm5+5o+JJWmP6/ouSJKNP3lbxJK0x66DTs+jO+6oeo2XuWHhyjrn53qrHaJnvXzAv\nm5+5veoxWmL6/qclSX789JcqnqQ1/suBZyRJtjzz1YonaY2O/U9N40N3Vj1Gy4x8cGFmfWKo6jFa\nYvRPu5IkR15zT8WTtMamdy9Ikhz1p1+seJLW2PiJJW3zZ5P88s/nyKvb6Hr+fEEay9vj36AjV/7y\n36DH9bfHv3P+rXdekuTYv2mP6/nuH8/L0Te2x7UkyQ+Xzcsr/7o9ruehP/nlz9prPru+4kla45tv\nOSVJ+/27oN24gxkAAAAAgCICMwAAAAAARQRmAAAAAACKCMwAAAAAABQRmAEAAAAAKCIwAwAAAABQ\nRGAGAAAAAKCIwAwAAAAAQBGBGQAAAACAIgIzAAAAAABFBGYAAAAAAIoIzAAAAAAAFBGYAQAAAAAo\nIjADAAAAAFBEYAYAAAAAoIjADAAAAABQgZGRkdTr9fT29lY9SjGBGQAAAACgQrVareoRignMAAAA\nAAAUEZgBAAAAAPZhPT09qdcnl3objUa6u7v3+DyBGQAAAACgYiMjI3nLW96Sl7/85Zk2bVp+7/d+\nL1/5ylcmfP5kH7NRq9WK1hCYAQAAAAAqNDIykte97nUZHR3N+eefn3PPPTf/+q//msWLF2dwcHBC\nazSbzUnNUHq+wAwAAAAAUKHBwcG8613vyte+9rVce+21Wb16ddauXZtt27bl6quvrnq8FyQwAwAA\nAABUqNFo5C/+4i/GbFu4cGGOOOKIfOMb33jR5ii5i1lgBgAAAACo0Jw5c3b6/OMjjjgiTzzxxI7v\nR0ZGUq/Xx33dcsstSbLTfQMDA2PWXL169U6PGx0dzdDQ0C737cqUFv0/AAAAAACgwPTp03e6fcqU\nKdm2bduO72fMmJG+vr5xMXrNmjXZsGFDVqxYMW6NuXPnjvv++cc1m81cd911mTFjRnp6esat0dHR\nscvZBWYAAAAAgH1AR0dH+vr6xm3fuHFjNmzYkOXLl+92jdmzZ2f27Nnjtvf396fRaExojV/lERkA\nAAAAABQRmAEAAAAA9nE7e4bzi0FgBgAAAADYSzWbzZYe12oCMwAAAADAXqhWq03ozuSJHre7NUr4\n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\nonkAP9MAAAAASUVORK5CYII=\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x109a7c850>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 75 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [] | |
| } | |
| ], | |
| "metadata": {} | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment