Skip to content

Instantly share code, notes, and snippets.

@sfsheath
Last active April 19, 2019 20:03
Show Gist options
  • Save sfsheath/738a4be291e38fbbdba1a160bef4e580 to your computer and use it in GitHub Desktop.
Save sfsheath/738a4be291e38fbbdba1a160bef4e580 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Make a Colormap from a Categorical Variable and then Use it...\n",
"\n",
"\n",
"The code is set up so that it's easy to add your own categories Do that in the first cell past the import statements.\n",
"\n",
"Seaborne has good color palletes: https://seaborn.pydata.org/tutorial/color_palettes.html\n",
"\n",
"matplotlib.colors is also useful: https://matplotlib.org/api/colors_api.html\n",
"\n",
"Pandas has good plotting tools: https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html\n",
"\n",
"Note: This is not a complete exploration of all possible forms that data can take or what to do with those forms. My goal is to demonstrate a few discrete re-usable patterns."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import random\n",
"import matplotlib as plt\n",
"import pandas as pd\n",
"import seaborn as sns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Create colormap from categories"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'good': (0.4, 0.7607843137254902, 0.6470588235294118),\n",
" 'bad': (0.9882352941176471, 0.5529411764705883, 0.3843137254901961),\n",
" 'sort of ok': (0.5529411764705883, 0.6274509803921569, 0.796078431372549),\n",
" 'awesome': (0.9058823529411765, 0.5411764705882353, 0.7647058823529411),\n",
" 'immeasurable': (0.6509803921568628, 0.8470588235294118, 0.32941176470588235),\n",
" 'yahoo': (1.0, 0.8509803921568627, 0.1843137254901961)}"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Rather than 'commenting out', just make your category last. Fewer keystrokes...\n",
"categories = ['type1','type2','type3']\n",
"categories = ['good','bad', 'sort of ok', 'awesome', 'immeasurable', 'yahoo']\n",
"\n",
"color_map = dict(zip(categories, sns.color_palette(\"Set2\", len(categories))))\n",
"\n",
"color_map"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'good': '#66c2a5',\n",
" 'bad': '#fc8d62',\n",
" 'sort of ok': '#8da0cb',\n",
" 'awesome': '#e78ac3',\n",
" 'immeasurable': '#a6d854',\n",
" 'yahoo': '#ffd92f'}"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# While we're at it, turn this into a hex-based colormap. Some tools need (folium comes to mind).\n",
"hex_map = { k : plt.colors.to_hex(color_map[k]) for k in color_map.keys() }\n",
"hex_map"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generate random values and make charts"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# easy-peasy.\n",
"# or put your data here?\n",
"\n",
"values = random.sample(range(1, 10), len(categories))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>category</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>good</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>bad</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>sort of ok</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>awesome</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>immeasurable</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>yahoo</td>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" category value\n",
"0 good 3\n",
"1 bad 2\n",
"2 sort of ok 4\n",
"3 awesome 9\n",
"4 immeasurable 1\n",
"5 yahoo 8"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# make a df with two columns, one for categories, one for values\n",
"cats_as_rows = pd.DataFrame({'category': categories, 'value': values })\n",
"\n",
"cats_as_rows"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1196706a0>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAFHCAYAAACBAaZxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAGm9JREFUeJzt3XmYZXV95/H3B2iCsihCIyhLo5OgLCLQTlAhGonbuGRjEZcYTYKZGSUuY4bE8dEkjvGZJGY1RoKKJqBiq1GZYDQGFCISaBbZJItIplFCQxDBiDT4nT/OKSibbqqq+9577u/W+/U89+k+p+7yPdD1qV/9zm9JVSFJasc2QxcgSVoag1uSGmNwS1JjDG5JaozBLUmNMbglqTEGtyQ1xuCWpMYY3JLUmO3G8aa77757rVq1ahxvLUkzae3atbdU1crFPHcswb1q1SouueSScby1JM2kJDcs9rl2lUhSYwxuSWqMwS1JjRlLH7ckLWTDhg2sW7eOu+66a+hSJmqHHXZg7733ZsWKFVv8Hga3pEGsW7eOnXfemVWrVpFk6HImoqq49dZbWbduHfvvv/8Wv49dJZIGcdddd7Hbbrstm9AGSMJuu+221b9lGNySBrOcQnvOKK7Z4JakxtjHLS3CTb9zwUQ/b883HjXRz5sGrzr/zJG+33uOfvFI32+nnXbizjvvHOl7bilb3JLUGINb0rJ0yimn8K53veu+47e+9a287W1v45hjjuHwww/nkEMO4ZOf/OQDXnfeeefx/Oc//77jV7/61Zx++ukArF27lqc97WkcccQRPPvZz+ab3/zmWGo3uCUtSyeccAJnnXXWfcdnnXUWL3/5y/nEJz7BpZdeyrnnnssb3vAGqmpR77dhwwZe85rXsGbNGtauXcsrX/lK3vSmN42ldvu4JS1Lhx12GDfffDPf+MY3WL9+Pbvuuit77rknr3vd6/jiF7/INttsw4033si//du/seeeey74ftdddx1XXXUVz3zmMwG499572WuvvcZSu8Etadk67rjjWLNmDTfddBMnnHACZ5xxBuvXr2ft2rWsWLGCVatWPWDM9Xbbbcf3v//9+47nvl5VHHTQQVx44YVjr9uuEknL1gknnMCHP/xh1qxZw3HHHcftt9/OHnvswYoVKzj33HO54YYHrrS63377cc011/C9732Pb33rW3z+858H4IADDmD9+vX3BfeGDRu4+uqrx1K3LW5JU2HUw/cW46CDDuKOO+7g0Y9+NHvttRcveclLeMELXsAhhxzC6tWredzjHveA1+yzzz4cf/zxHHzwwey///4cdthhAGy//fasWbOGk08+mdtvv5177rmH1772tRx00EEjrzuL7XhfitWrV5cbKWiWOI579K699loe//jHD13GIDZ17UnWVtXqxbzerhJJaozBLUmNMbglDWYcXbXTbhTXbHBLGsQOO+zArbfeuqzCe2497h122GGr3sdRJZIGsffee7Nu3TrWr18/dCkTNbcDztYwuCUNYsWKFVu1C8xyZleJJDXG4JakxhjcktQYg1uSGmNwS1JjFhXcSV6X5OokVyX5UJKtG4QoSdpiCwZ3kkcDJwOrq+pgYFvgReMuTJK0aYvtKtkOeEiS7YCHAt8YX0mSpAez4AScqroxye8C/wp8F/hsVX124+clOQk4CWDfffcddZ2StOX+8YmT+6wfuXzsH7GYrpJdgZ8E9gceBeyY5KUbP6+qTq2q1VW1euXKlaOvVJIELK6r5CeA66tqfVVtAD4OPGW8ZUmSNmcxwf2vwJFJHpokwDHAteMtS5K0OQsGd1VdBKwBLgWu7F9z6pjrkiRtxqJWB6yqtwBvGXMtkqRFcOakJDXG4JakxhjcktQYg1uSGmNwS1JjDG5JaozBLUmNMbglqTEGtyQ1xuCWpMYY3JLUGINbkhpjcEtSYwxuSWqMwS1JjTG4JakxBrckNcbglqTGGNyS1BiDW5IaY3BLUmMMbklqjMEtSY0xuCWpMQa3JDXG4JakxhjcktQYg1uSGmNwS1JjDG5JaozBLUmNMbglqTEGtyQ1xuCWpMYY3JLUGINbkhpjcEtSYxYV3EkenmRNkq8muTbJk8ddmCRp07Zb5PP+EPhMVR2bZHvgoWOsSZL0IBYM7iQPA34M+HmAqrobuHu8ZUmSNmcxXSX7A+uB9ye5LMlpSXbc+ElJTkpySZJL1q9fP/JCJUmdxQT3dsDhwLur6jDgO8ApGz+pqk6tqtVVtXrlypUjLlOSNGcxwb0OWFdVF/XHa+iCXJI0gAWDu6puAv5fkgP6U8cA14y1KknSZi12VMlrgDP6ESVfA14xvpIkSQ9mUcFdVZcDq8dciyRpEZw5KUmNMbglqTEGtyQ1xuCWpMYY3JLUGINbkhpjcEtSYwxuSWqMwS1JjTG4JakxBrckNcbglqTGGNyS1BiDW5IaY3BLUmMMbklqjMEtSY0xuCWpMQa3JDXG4JakxhjcktQYg1uSGmNwS1JjDG5JaozBLUmNMbglqTEGtyQ1xuCWpMYY3JLUGINbkhpjcEtSYwxuSWqMwS1JjTG4JakxBrckNcbglqTGGNyS1JhFB3eSbZNcluTscRYkSXpwS2lx/wpw7bgKkSQtzqKCO8newPOA08ZbjiRpIdst8nl/APwqsPPmnpDkJOAkgH333XfrK1NT3vmBSyb6ea9/+eqJfp40TRZscSd5PnBzVa19sOdV1alVtbqqVq9cuXJkBUqSftBiukqeCrwwydeBDwPPSPKXY61KkrRZCwZ3Vf1aVe1dVauAFwF/V1UvHXtlkqRNchy3JDVmsTcnAaiq84DzxlKJJGlRbHFLUmMMbklqjMEtSY0xuCWpMQa3JDXG4JakxhjcktQYg1uSGmNwS1JjDG5JaozBLUmNMbglqTEGtyQ1xuCWpMYY3JLUGINbkhpjcEtSY5a0A864ver8Myf2We85+sUT+yxJGiVb3JLUGINbkhpjcEtSYwxuSWqMwS1JjTG4JakxBrckNcbglqTGGNyS1BiDW5IaY3BLUmMMbklqjMEtSY0xuCWpMQa3JDXG4JakxhjcktQYg1uSGmNwS1JjFgzuJPskOTfJNUmuTvIrkyhMkrRpi9ks+B7gDVV1aZKdgbVJPldV14y5NknSJizY4q6qb1bVpf3f7wCuBR497sIkSZu2mBb3fZKsAg4DLtrE104CTgLYd999R1DabLn3nb8w0c/b9vXvnejnSZqcRd+cTLIT8DHgtVX17Y2/XlWnVtXqqlq9cuXKUdYoSZpnUcGdZAVdaJ9RVR8fb0mSpAezmFElAd4LXFtV7xx/SZKkB7OYFvdTgZcBz0hyef/4L2OuS5K0GQvenKyqC4BMoBZJ0iI4c1KSGmNwS1JjDG5JaozBLUmNMbglqTEGtyQ1xuCWpMYY3JLUGINbkhpjcEtSYwxuSWqMwS1JjTG4JakxBrckNcbglqTGGNyS1BiDW5Ias+AOOJJm34euO26in3fiAR+d6OfNGlvcktQYg1uSGmNwS1JjDG5JaozBLUmNMbglqTEGtyQ1xuCWpMYY3JLUGINbkhpjcEtSYwxuSWqMwS1JjTG4JakxBrckNcbglqTGGNyS1BiDW5IaY3BLUmMWFdxJnpPkuiT/nOSUcRclSdq8BYM7ybbAu4DnAgcCJyY5cNyFSZI2bTEt7v8M/HNVfa2q7gY+DPzkeMuSJG1OqurBn5AcCzynqn6xP34Z8KNV9eqNnncScFJ/eABw3ejL3aTdgVsm9FlD8Pra5vW1a9LXtl9VrVzME7cb1SdW1anAqaN6v8VKcklVrZ70506K19c2r69d03xti+kquRHYZ97x3v05SdIAFhPcFwM/nGT/JNsDLwI+Nd6yJEmbs2BXSVXdk+TVwN8A2wLvq6qrx17Z4k28e2bCvL62eX3tmtprW/DmpCRpujhzUpIaY3BLUmMMbklqjMGtiUry3E2c++UhapFaZXBr0t6c5BlzB0l+FZdQkJakqVElSa4ENltwVT1hguWM3KxfH0CS3YGzgTcCzwEeB5zYr4PTvCSPBN4OPKqqntsvyPbkqnrvwKWNTJIfAd4NPLKqDk7yBOCFVfW2gUvbakkeBrwVOLo/9QXgN6vq9sGK2oTWgnu//q//vf/zL/o/XwJQVU0vOTvr1zcnyR7A3wJrgVdWS/8IF5DkHOD9wJuq6tAk2wGXVdUhA5c2Mkm+QPeD9z1VdVh/7qqqOnjYyrZeko8BVwEf6E+9DDi0qn5muKoeqKngnpPksrl/MPPOXVpVhw9V0yjN4vUluYMf/G1ie+Ce/lxV1S6DFDZiSS6uqifN/3+Y5PKqeuLQtY3KLF/jpq5jGq+t1T7uJHnqvIOn0O61bMrMXV9V7VxVu8x77FBVO82dH7q+EfpOkt3of0glORKYql+zR+CWJI/l/ms8FvjmsCWNzHeTHDV30H8ffnfAejap1Rb3EcD7gIcBAW6j+5X70kELG5FlcH0vBH6sPzyvqs4esp5RSnI48MfAwXS/cq8Ejq2qrwxa2AgleQzddPCn0P3bvB54aVV9fci6RiHJE+m6Sea+9/4dePm0/f9rMrjn9DcSmLYbB6Myi9eX5B3Ak4Az+lMnApdU1a8NV9Vo9f3aB9B9419XVRsGLmkskuwIbFNVdwxdy6gl2QWgqr49dC2b0mRw94H2Fu5vtU3lnd+tkeR5wEHADnPnquo3h6toNJJ8BXhiVX2/P96W7uZd8yNm4L7reR6winmLuFXVO4eqaVSSvP7Bvj4j19hEtrTab/o+4A7g+P7xbbo7+TMhyZ8BJwCvoWu1HQfs96AvasvD5/39YYNVMR6fBn4e2A3Yed5jFuy8wGMWNJEtrba4m7jzu6WSfKWqnjDvz52Ac6rq6AVfPOWSnAi8AziX7ofSjwGnVNVHBi1sROb+nw1dh7ZMK9nSaou7iTu/W2HuWv4jyaOADcBeA9YzMlX1IeBI4OPAx+gmp8xEaPfOSfKsoYsYpySPSfLpJOuT3Jzkk/0Ny1nQRLaMbM/JCfuvwAf6/qj77vwOW9JInZ3k4cD/oZukAnDagPWMVFV9k9ndRenLwCeSbEP3AzfM0Dj13pnAu4Cf7o9fBHwI+NHBKhqdXwY+uFG2/PygFW1Ck10lc6b9zu+WSvIQuh9OR9ONlT0feHdV3TVoYVpQkuvp1l65cpZmhM63qe6gJFdU1aFD1TRq054tTQZ3K3d+t1SSs+hukPxlf+rFwMOq6vjhqto6SfavquuHrmPcknwRePrcqJlZkuQR/V//J9347Q/TNSxOAHadhSGdSX4I+FkeOCpoqkZ0tRrcTawnsKWSXFNVBy50riVJ1lbVEUk+X1XHDF3PuCQ5HXgMcA7wvbnzMzJU7nq6oM4mvlxV1Xw/d5LP0M10XQvcO3e+qn5vsKI2odU+7sdW1c/OO/6NJJcPVs3oXZrkyKr6MkCSHwUuGbimrbVNkl8HfmRT44FnIdh61/eP7fvHzKiq/YeuYQL2rqrnDF3EQloN7u8mOaqqLoDpvfO7VPOWdV0BfCnJv/bH+wFfHbK2EXgR8FN0/+ZmZczvA1TVbwD0QzipqjuHrWg8khwMHMgPThD74HAVjcyXkhxSVVcOXciDabWr5FDgg9w/eeM2pnA9gaWat6zrJlXVDZOqZVySPLeqzhm6jnHpA+0vgLn+4FuAn6uqq4erarSSvAV4Ol1w/zXwXOCCqjp2yLq2xrxG03bADwNfo+vqmhsVNFVj81sN7rlftXfq/7yTvl+qqmapy2TmLIMby1+iW4v73P746cDbq+opgxY2Qn3IHUq3VMGh/eYRf1lVzxy4tC3WWqOp1Qk4q+nGW+5C1+p+Fd1uKn+ebissTa8mphRvhR3nQhugqs4DdhyunLH4bj9q5p5+2NzNwD4D17RVquqG+Q+6rtea95gqrfZx7w0cPtd/2P/q9n/pWnFr6SauaDrN+o3lryV5M/fvXvRSul+7Z8kl/QSxP6f7frsTuHDYkkajX3L494BH0f1A2g+4lm7Bt6nRaot7D+YNtaKbofbIqvruRuc1fZqYUrwVXkm3BvfH+8fu/bmZkCTAb1fVt6rqz4Bn0t1fesXApY3Kb9EtyfCP/SiaY+hmw06VVlvcZwAXJflkf/wC4Mx+feBrhitLizB/SjH0N5YHrGekquo24GS4b4nXHad19t2WqKpK8tfAIf3x14etaOQ2VNWtSbZJsk1VnZvkD4YuamNN3pwESLIamNve6++rqvVxzsvKtE8p3lJJzqT74XQvcDHdfZg/rKrfGbSwEUryAeBPqurioWsZtSR/Szds9R10S/PeDDxp2m4uNxvc0jSaWwI0yUuAw4FT6EY7TdVwsq2R5KvAfwJuAL7DlA6Z2xJJTqZbMOs24CV0gx/OqKpbBy1sI612lUjTakWSFXSttj+pqg1JZq119OyhCxijPehutF5KNwLqg9O4WFirNyfVqH4RnwXPNew9wNfphgB+sR8fPFPdQfzgMLmpHTK3Jarqf9FNwHkv3XKu/5Tk7el2tZ8adpVoopJcWlWHL3RuliTZrqruGbqOUZk3yzB0U973p9sUeaqGzG2Nfnb2K+jmh5xLN9Lkc1U1FfNE7CrRRCTZE3g08JAkh3H/CnO7AA8drLAR62cRvh14VFU9N8mBwJPpWnAzoaoOmX+c5HDgvw1Uzkgl+RXg5+iWKjgNeGPf3bUN8E+Awa1l5dl0v3ruTTfBYS64vw38+kA1jcPpdDNB39Qf/yPwEWYouDdWVZf2K1jOgkcAP7PxFPeq+n6S5w9U0wPYVaKJ6VstJ1bVGUPXMi5JLq6qJyW5rKoO689N3WazW2OjZXm3AY4AHlFVs3zTcqp4c1IT069v8bqh6xiz7yTZjf5mXZIj6RZAmyU7z3v8EHA23XZtmhBb3JqoJO+g6z/8CN0YYACq6t8HK2qEkhwB/BFwMN0uTSuBY1tfcnhz+t+idpq1iVTTzuDWRPXbX21sJra9mpNkO+AAun7866pqw8AljdRymB067QxuaYSSXEC3xvj5dEsx3DFwSSO3HGaHTjv7uDVRSVYkOTnJmv7x6n6m4ax4GXAd3U7hX0pySZLfH7imUZs/O/RT/W8UtgAnyOGAmrR30+2p+af98cv6c784WEUjVFXXJ7kLuLt//Djw+GGrGrm52aFXMLuzQ6eaXSWaqCRXVNWhC51rVZJ/obv5eiZdd8nl/WiamTZrs0OnnS1uTdq9SR5bVf8CkOQxdDe5ZsUfAUcBJwKHAV9I8sW5650VSZ5HtyvMDvNO/+ZA5Sw7trg1UUmOoZtZ+DW6URf7Aa+Yv0/jLEiyE91aF/8D2Luqth24pJFJ8md0yxT8ON208GOBf6iqXxi0sGXE4NbE9asBHtAfXldVM7PdXJLfA46mWx3wS8AFwPlVNTP7Tib5SlU9Yd6fOwHnVNXRQ9e2XDiqRBOV5Dhg+35CyguBD/WLFM2KC+lmEb6SbsPg6+nWZ5klc3uE/keSR9Ht+brXgPUsO/Zxa9LeXFUf7TcMPgb4XbpRJbOySNGuwGfpwvpyuuVALwSeMWRRI3Z2v8v779BtOFB0XSaaELtKNFFziy8l+W3gyqo6c/6CTK3r16p+EvDlfpLK44C3V9XPDFzaWPTdXjtU1aytxzLV7CrRpN2Y5D3ACcBf99/4s/Tv8K6qugu6UKuqr3J/f/5MSPLQJG9O8uf9/Yk9pmnJ0+Vglr5h1Ibjgb8Bnl1V36Jb//iNw5Y0Uuv6boS/Aj6X5JN0m+rOkvcD36PbIALgRuBtw5Wz/NhVIo1JkqfR7RL+maq6e+h6RiXJJVW1eqM1x2dmElULvDkpjUlVfWHoGsbk7iQP4f41xx9L1wLXhBjckpbqLcBngH2SnAE8lW5bOk2IXSWSlqzf5edIutmvX66qWwYuaVkxuCUtWZInAKuY91t7VX18sIKWGbtKJC1JkvcBTwCuBuZWPizA4J4QW9ySliTJNVV14NB1LGeO45a0VBcmMbgHZItb0pL049M/BdxENwwwdBs+u+fkhBjckpYkyT8Drweu5P4+bqpq1maITi1vTkpaqvVV9amhi1jObHFLWpIkfwo8HPg082ZMOhxwcmxxS1qqh9AF9rPmnXM44ATZ4pakxtjilrQkSfYHXsMDZ06+cKialhuDW9JS/RXwXro+7u8v8FyNgV0lkpYkyUVVNSt7hDbJ4Ja0JEleDPww3abI80eVXDpYUcuMXSWSluoQ4GV0O9fPX2Rqlnayn2q2uCUtST9z8sBZ2o6tNS4yJWmprqKbgKOB2FUiaakeDnw1ycX8YB+3wwEnxOCWtFRvGbqA5c4+bklqjC1uSYuS5IKqOirJHXSjSO77Et163LsMVNqyY4tbkhrjqBJJaozBLUmNMbjVvCRPT/KUoeuQJsXg1ix4OjDW4E7H7xdNBf8hamol+bkkX0lyRZK/SPKCJBcluSzJ3yZ5ZJJVwC8Dr0tyeZKjk6xM8rEkF/ePp/bvtzLJ55JcneS0JDck2b3/2uuTXNU/XtufW5XkuiQfpJst+OYkfzCvvl9K8vuT/u8iOapEUynJQcAngKdU1S1JHkE3BO1bVVVJfhF4fFW9IclbgTur6nf7154J/GlVXZBkX+BvqurxSf4EuLGqfjvJc4BzgJXAfsDpwJF0Q9suAl4K3AZ8ra/hy0l2Aq4AHldVG5J8CXhVVV05of8sEuA4bk2vZwAfrapbAKrq35McAnwkyV7A9sD1m3ntTwAHJpk73qUP3aOAn+7f7zNJbuu/fhTwiar6DkCSjwNHA58CbqiqL/evuTPJ3wHPT3ItsMLQ1hAMbrXkj4F3VtWnkjwdeOtmnrcNcGRV3TX/5LwgX4rvbHR8GvDrwFeB92/JG0pbyz5uTau/A45LshtA31XyMODG/usvn/fcO4Cd5x1/lm5PRPrXPrH/698Dx/fnngXs2p8/H/ipJA9NsiNdq/z8TRVVVRcB+wAvBj60pRcnbQ2DW1Opqq4G/jfwhSRXAO+ka2F/NMla4JZ5T/808NNzNyeBk4HV/Y3Na+huXgL8BvCsJFcBxwE3AXf0O7ecDvwDXf/2aVV12YOUdxbw91V124M8Rxobb05q2UjyQ8C9VXVPkicD766qJy70uk28z9nA71fV50depLQI9nFrOdkXOKsfj3038EtLeXGSh9O1yq8wtDUkW9yS1Bj7uCWpMQa3JDXG4JakxhjcktQYg1uSGvP/ATekOqUNSuKZAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# make a bar chart. to invoke coloring bars, y needs to be explicitly set\n",
"cats_as_rows.plot.bar(x='category', y = 'value',\n",
" color = [color_map[cat] for cat in cats_as_rows.category ])\n",
"\n",
"# you can add legend = False as an argumen to bar() to suppress output of legend."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# make a pie chart. to invoke coloring bars, y needs to be explicitly set\n",
"# sure, pie charts have a bad rap. do note that in above bar chart, colors add nothing.\n",
"# also, parameter name is 'colors'. that's a little annoying\n",
"\n",
"cats_as_rows.set_index('category', drop= False, inplace= True)\n",
"\n",
"ax = cats_as_rows.plot.pie( y = 'value', legend = False, title = None,\n",
" colors = [color_map[cat] for cat in cats_as_rows.category ])\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>good</th>\n",
" <th>bad</th>\n",
" <th>sort of ok</th>\n",
" <th>awesome</th>\n",
" <th>immeasurable</th>\n",
" <th>yahoo</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>entity1</th>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>9</td>\n",
" <td>1</td>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" good bad sort of ok awesome immeasurable yahoo\n",
"entity1 3 2 4 9 1 8"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Now the categorical values are columns. That's a common case.\n",
"cats_as_cols = pd.DataFrame(data = [values], columns = categories, index = ['entity1'])\n",
"cats_as_cols"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>counts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>good</th>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bad</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>sort of ok</th>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>awesome</th>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>immeasurable</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>yahoo</th>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" counts\n",
"good 3\n",
"bad 2\n",
"sort of ok 4\n",
"awesome 9\n",
"immeasurable 1\n",
"yahoo 8"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# It's trivial to turn this into the same form as above. T = 'transpose'\n",
"transposed = cats_as_cols.T.rename(columns = {\"entity1\":\"counts\"})\n",
"\n",
"transposed"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x11b82e2b0>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Because the categories are in the df's index, you don't have to set x. But y does still have to be explcitly set.\n",
"# And note that hex_map is providing the colors and that .index is provding the category names.\n",
"transposed.plot.bar( y = 'counts', color = [hex_map[cat] for cat in transposed.index ])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## And we can go full circle..."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['good', 'bad', 'sort of ok', 'awesome', 'immeasurable', 'yahoo']"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"categories_from_df = list(cats_as_rows.category.unique())\n",
"\n",
"# or \n",
"\n",
"# categories_from_df = list(cats_as_cols.columns)\n",
"\n",
"categories_from_df # this about where we started. wash, rinse, repeat..."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment