{ "cells": [ { "cell_type": "markdown", "id": "05b12869", "metadata": {}, "source": [ "# Making a bar graph in plotnine\n", "\n", "## Basic bar chart\n", "\n", "Making a bar graph in plotnine is a tiny bit more difficult than other charts.\n", "\n", "Usually you'll want your data organized up so that each row will be its own bar. In this dataset, each type of animal is going to get its own bar:" ] }, { "cell_type": "code", "execution_count": 145, "id": "8cc924b7", "metadata": {}, "outputs": [ { "data": { "text/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", "
speciesnum_animals
0cat8
1dog22
2rabbit2
\n", "
" ], "text/plain": [ " species num_animals\n", "0 cat 8\n", "1 dog 22\n", "2 rabbit 2" ] }, "execution_count": 145, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "from plotnine import *\n", "\n", "df = pd.DataFrame([\n", " { 'species': 'cat', 'num_animals': 8 },\n", " { 'species': 'dog', 'num_animals': 22 },\n", " { 'species': 'rabbit', 'num_animals': 2 },\n", "])\n", "df" ] }, { "cell_type": "markdown", "id": "eae51bf3", "metadata": {}, "source": [ "When we plot, we use `geom_bar` to plot a bar. " ] }, { "cell_type": "code", "execution_count": 146, "id": "4e455891", "metadata": {}, "outputs": [ { "data": { "image/png": "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7l23Y8cOrV69WsXFxerYsaMmTZqkK664QpJUXl6u3NxcffbZZ4qPj9fNN9+sDRs26I9//KNdDwUBYNKkSRo2bJi2bNmiwsJCTZ06VevXr1dJSYmio6M1cuRI3XrrrXW+Z/369frLX/6i4OBg3X777crIyPCuq66u1hNPPKGPPvpIcXFx+u1vf6s+ffpIkjIzMzVgwAD17NlTzzzzjDwej8aMGSNJWrNmjcLCwprvgbcCBAwazOPxaOHCherRo4fy8vLkcrm0b98+SdI111yjadOmKSQkRGvWrNHSpUu1YsUKDR8+XAcOHFBMTIwmTJhg8yNAoKupqVF2draGDh2qUaNGaffu3crOztZNN92kr776SosWLdLDDz+stLQ0vf/++8rKylJeXp6io6P1/PPPS5JefvllnTp1SgsWLLD50SBQ/OMf/9DcuXMVFxenHTt26JFHHlFiYqL+7//+T48++qh69Oih7t27S5LKysr0zTff6MUXX1RhYaH+8Ic/KCUlRVdffbUk6aOPPtKMGTM0c+ZM/fOf/1R2drZeeOEFXXbZZd6/LzU1VVOnTtWGDRu0dOlSWx5za8ApJDTYF198oW+++UaTJk1SRESEgoODvf/nMWTIEEVERCgkJERjx45VYWGhysrKbJ4Yptm3b5/OnDmj0aNHKzg4WNdcc43S0tIkSR988IHS0tJ03XXXyel0Kj09XR06dNC2bdvk8XiUn5+vO++8U+Hh4Wrfvr2GDRtm86NBoLj11lvVvn17BQcH62c/+5mSkpLkcDjUu3dvpaWlac+ePd5tLcvS+PHj5XK51K1bN6Wnp2vz5s3e9Z07d9bPf/5zOZ1ODR48WAkJCfr444/teFitHkdg0GAlJSWKj49XSEhInds9Ho9eeeUV5efn69SpUwoKOtvFZWVlio6OtmNUGOrkyZOKjY317kOSFB8fr4qKCn377bdKSEios327du108uRJlZWVqaamRnFxcd51536N1u3c/WbHjh169dVX9dVXX8myLJ05c0YdOnTwro+IiFBkZKR3OT4+Xp988kmd5fPv++TJk004PS6GIzBosLi4OJ04cUI1NTV1bt+8ebO2bt2qxx57TOvWrav3mgOHw9GcY8JgsbGxOnnypGpra723nThxQpJ0+eWXq7i4uM7233zzjWJjYxUdHa3g4GCVlJR41537NSCdff3KokWLlJGRoTVr1ujVV1/VtddeW2ebyspKVVZWepdLSkrqvA7rh/3x3OXY2NimHRwXRMCgwbp37674+Hi9+OKLqqysVE1Njfbs2aOqqiqFhIQoKipKbrdbr7zySp3va9u2rb7++mubpoZJrrjiCrlcLq1fv141NTX69NNPtXPnTknSTTfdpJ07d2rHjh3yeDz6xz/+oePHj+uGG26Q0+lUv379tHbtWlVVVam4uFgbNmyw+dEg0FRXV6umpkZt2rSR0+nUJ598UufoinT2f7jWrFmj6upqHTx4UJs2bdLAgQO96wsKCvT+++9798Gvv/66XgRJZ5/3Tp48qerq6iZ/XK0Vp5DQYE6nU/PmzdMf//hHTZ48WbW1tbryyis1c+ZM7dy5U/fcc4+ioqJ055131vm+W265RYsXL9avfvUrdenSRdnZ2TY9AgS64OBgPfLII1qxYoX+/Oc/q0+fPvr5z3+u6upqdejQQQ8//LBWrVqlEydOKCkpSfPmzfOeppwyZYqWL1+ue+65R/Hx8Ro4cKD++c9/2vuAEFAiIiL061//WkuXLlVNTY2uu+46XX/99XW2iY6OVkJCgu699145nU6NGTPG+wJeSbr++uu1fft2PfPMM4qLi9OcOXMUFRVV7++66qqr1LlzZ02YMEGWZenll1/mXUh+xmchAWiR/vrXv2r79u28GwlooTiFBKBFOHbsmA4ePCjLsnT48GG99dZb6tevn91jAWginEIC0CKcOXNGS5Ys8V6gbNCgQfrFL35h91gAmginkAAAgHE4hQQAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAIyUmpqq+++/3+4xANiEC9kBMNJf/vIXxcTE2D0GAJtwITsAAGAcTiEBaLDPP/9cw4cP1+WXX66IiAj927/9m/7rv/5LkjRx4kT16dNHGzZsUJ8+fRQWFqa+fftq27Zt9e5n1apVuuqqqxQWFqYOHTrokUcekcfjqbPN8ePHNX78eLVr107h4eG64oor9PTTT3vXX+gU0tatW5Wenq7IyEi1adNG48aNU3FxcZ1tcnJy1K1bN4WFhSk+Pl5DhgxRQUGBv35EAJoJp5AANNhtt92mdu3a6cUXX1SbNm305Zdf6tixY971RUVFmjp1qubPn6+YmBjl5OToF7/4hb744gslJCRIkp588kk99NBDmjVrlp544gnt3bvXGzA5OTmSpG+//db7QYzZ2dnq0qWLvvjiCx08ePCis23dulU333yzhg8frtdee00VFRWaO3euRowYoa1bt0qS1qxZo3nz5umxxx5Tv379dOrUKX3wwQcqKytrqh8ZgKZiAUADnDhxwpJkvfnmmxdcP2HCBEuS9d5773lv++6776yoqChr9uzZlmVZVllZmXXZZZdZc+bMqfO9zz77rBUeHm6VlJRYlmVZmZmZVmhoqFVQUHDReVJSUqxp06Z5lwcOHGj179/fqq2t9d72+eefWw6Hw3rnnXcsy7KsadOmWWlpaZf2wAEEJE4hAWiQyy+/XCkpKZozZ45Wr15d58jLD9q0aaP09PQ6y0OGDNGHH34oSfrXv/6l77//Xr/85S9VU1Pj/TNkyBBVVVVpz549kqT33ntP6enpSk1NbdBslZWVys/P1y9/+Ut5PB7v/fbo0UOdOnXSxx9/LElKS0vTJ598ot/97nfasmWLqqurG/lTAWAXAgZAgzgcDr377rvq2bOnpk2bpk6dOunaa6/V5s2bvdvEx8fX+7527dqpqKhIklRSUiLpbEiEhIR4/3Tv3l2SdPToUUlnTyElJSU1eLbS0lJ5PB7NmjWrzv2GhISosLDQe78TJ07UU089pY0bN2rAgAGKj4/XjBkzVFVV5dsPBYBteA0MgAbr0aOHXn/9dVVXV+tf//qXMjMzddttt+n48eOSpBMnTtT7nm+++UaJiYmSpNjYWEnS+vXr1alTp3rbdu7cWdLZoz1fffVVg+dq27atHA6HMjMzNXLkyHrr4+LiJElBQUGaMWOGZsyYoePHj2vdunWaPXu24uLiNG/evAb/fQDsR8AAuGQhISEaNGiQZs+erYyMDG9snDp1Sps2bfKeRjp16pT+93//V9OmTZMk9evXTxERETp27Jhuv/32i97/kCFDtHTpUhUWFio5Ofkn54mMjFS/fv20d+9eLVy4sEGPoUOHDnrggQe0du1a7d27t0HfAyBwEDAAGuSzzz7TAw88oDvuuENdu3bVqVOntGjRIqWmpqpr166Szh5hue+++5SVlaW2bdsqJydHlmVp5syZks4eKXnsscf00EMP6dixY7r55pvldDp16NAh/fWvf9Ubb7yhiIgIzZo1S2vWrNHAgQM1b948denSRYcOHdKBAwe0ePHiC863ZMkSpaen64477tDYsWMVExOjY8eO6e9//7vuuece3XzzzZoyZYpiYmJ0ww03KCYmRvn5+dq1a5emTp3aXD9GAH5CwABokPbt26t9+/ZatGiRjh8/rjZt2mjAgAF65ZVX5HQ6JUmJiYlavHixHnzwQR08eFC9e/fWxo0b1a5dO+/9PPDAA+rQoYOefPJJ5ebmKiQkRF27dtV//Md/yOVySTp7Cik/P19z5szRQw89pMrKSqWmpv5oaPTv319btmzRo48+qnvuuUdut1sdO3bU4MGD1a1bN+82L7zwgl544QVVVlaqS5cueuqpp3Tfffc14U8OQFPgSrwA/GLixInavn27951EANCUeBcSAAAwDgEDAACMwykkAABgHI7AAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIzz/wBeXN06UfJV6AAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 146, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='species', y='num_animals')\n", " + geom_bar(stat='identity')\n", ")" ] }, { "cell_type": "markdown", "id": "944aa586", "metadata": {}, "source": [ "The little extra bit we added was `stat='identity'`. It means \"just plot the y axis like you would expect it to be plotted.\"\n", "\n", "What's the alternative?? Glad you asked!" ] }, { "cell_type": "markdown", "id": "047a3047", "metadata": {}, "source": [ "## Aggregate bar chart (median)\n", "\n", "A lot of the time your data isn't set up like you want it to be set up. Say for example we have a bunch of countries with life expectancies. Want we want to plot is different, though: we want the median life expectancy per continent." ] }, { "cell_type": "code", "execution_count": 90, "id": "fbc6e19e", "metadata": {}, "outputs": [ { "data": { "text/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", "
countrycontinentgdp_per_capitalife_expectancypopulation
0AfghanistanAsia66354.86322856302
1AlbaniaEurope419574.2003071856
\n", "
" ], "text/plain": [ " country continent gdp_per_capita life_expectancy population\n", "0 Afghanistan Asia 663 54.863 22856302\n", "1 Albania Europe 4195 74.200 3071856" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "from plotnine import *\n", "\n", "df = pd.read_csv('countries.csv')\n", "df.head(2)" ] }, { "cell_type": "markdown", "id": "34b8782b", "metadata": {}, "source": [ "Instead of telling `geom_bar` to plot the identity (the normal actual value), we tell it to plot a **summary statistic**. Which summary statistic? The median, using numpy's `np.median`." ] }, { "cell_type": "code", "execution_count": 91, "id": "792f39af", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGuCAYAAACOdTzBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1fElEQVR4nO3de1yUdd7/8feAMMIIoSkKpqLdm2VleT4fyrR1S1FTU7PNPKdl7qrbrVlmapbWXVZU7qqU58xTtrZmkmZqZmoHtYNaiCcSUBCU8/D9/eGv2QhUmBkcLns9Hw8eeR3mms/14QLefa/rmstmjDECAACwED9fFwAAAFBaBBgAAGA5BBgAAGA5BBgAAGA5BBgAAGA5BBgAAGA5BBgAAGA5BBgAAGA5FXxdQFlKSUnxdQlus9lsCgoKUlZWlviswdKjf56hf56hf56hf565GvpXtWrVy67DCEw55efnp+DgYPn58S1yB/3zDP3zDP3zDP3zzB+lf1f33gEAgKsSAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFgOAQYAAFhOBV8XAOCCMWPG+LqEcu3VV1/1dQkAyhFGYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOUQYAAAgOVU8HUBAOANY8aM8XUJ5dqrr77q6xKuahx/l1YWxx8BBl7DD/Cl8QcEALyHU0gAAMByruoRmMDAQNntdl+X4RabzSZJcjgcMsb4uBp4Q0hIiK9LsDT65xkr9Y/ff1efsjj+ruoAk5ubq9zcXF+X4RZ/f38FBgbq/Pnzcjqdvi4HXpCRkeHrEiyN/nnGSv3j99/Vp7THX0kGHziFBAAALIcAAwAALIcAAwAALIcAAwAALIcAAwAALIcAAwAALIcAAwAALIcAAwAALIcAAwAALOeq/iReAEDJ8DDWS+NhrOUPIzAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByCDAAAMByKvi6gN/asWOHli5dqlOnTik0NFRDhgxR69atlZCQoNdee01HjhxR9erVNXz4cN12222+LhcAAPhIuQkw33zzjebNm6fx48frxhtvVHp6urKzs5Wfn69p06apS5cumjlzpnbu3KmZM2fqrbfeUlhYmK/LBgAAPlBuTiEtXbpU999/vxo0aCA/Pz+FhYWpRo0a2rdvn3JyctS7d28FBASoXbt2ql27trZv3+7rkgEAgI+UixEYp9OpQ4cOqXnz5ho5cqSys7PVqFEjDR06VEePHlVUVJT8/P6bterVq6eEhIQi20lMTFRiYqJr2m63KzIy8orsg7f5+/sX+i+sj++lZ+ifZ+ifZ+ifZ8qif+UiwKSlpSk/P19bt27V9OnTVbFiRb300kuaN2+eqlevLofDUWh9h8OhpKSkItuZO3eupk6d6pqeNGmSZsyYUeb1l6XQ0FBflwAvqVy5sq9LsDT65xn65xn655my6F+5CDB2u12SdM8996hq1aqSpD59+ui5555Tnz59dP78+ULrnz9/XkFBQUW2M2LECHXv3r3QdlNTU8uw8rLj7++v0NBQpaeny+l0+roceIFVj8Xygv55hv55hv55prT9K0ngKRcBplKlSqpatapsNluRZbVr19aqVatUUFDgOo0UHx+v9u3bF1k3IiJCERERrumUlBTL//F3Op2W3wdcwPfRM/TPM/TPM/TPM2XRv3JzEW+XLl20fv16paamKjMzU6tWrVLz5s116623KjAwUKtXr1ZeXp62bdumhIQEtWnTxtclAwAAHykXIzDShVNG6enpGj16tPz9/dW0aVMNHTpUFSpU0OTJk/X6669r+fLlCg8P18SJE7mFGgCAP7ByE2D8/f01fPhwDR8+vMiyqKgovfjiiz6oCgAAlEfl5hQSAABASRFgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5RBgAACA5VTwdQHlyZgxY3xdQrn26quv+roEAAAkMQIDAAAsiAADAAAshwADAAAsx+0AY4zxZh0AAAAl5naAqVWrliZPnqyffvrJm/UAAABcltsB5oEHHlBsbKxuuOEGdezYUYsWLVJWVpY3awMAACiW2wHmhRde0LFjx7R27Vpde+21Gjp0qCIiIjRixAjt2rXLmzUCAAAU4tFFvH5+furWrZtWrVqlEydOaMqUKdq+fbtatWqlW2+9Va+88orS0tK8VCoAAMAFXvsgu19++UXHjh1TUlKSAgMDVbNmTT399NN65plntHDhQnXv3t1bb1VigYGBstvtV/x9r1YhISG+LsHS6J9n6J9n6J9n6J9nyqJ/HgWYjIwMLV26VAsWLNDu3bvVoEEDTZ48WQ8++KAqV66s9PR0PfbYYxozZoxPAkxubq5yc3Ov+PterTIyMnxdgqXRP8/QP8/QP8/QP8+Utn8lGXxwO8A8+OCDWrNmjSTp/vvv15w5c9SyZctC64SGhmrUqFFatGiRu28DAABQhNsB5vvvv9dLL72kAQMGXHJo6Oabb9bmzZvdfRsAAIAi3A4wu3fvLtF6lSpVUocOHdx9GwAAgCLcvgspLi5OsbGxxS57++23GXUBAABlxu0A8+STT+rUqVPFLktOTtbkyZPdLgoAAOBS3A4w3333nZo2bVrsssaNG+vAgQNuFwUAAHApbgcYm82ms2fPFrssNTVVTqfT7aIAAAAuxe0A06JFC8XExBR5KrUxRm+88YZatGjhcXEAAADFcfsupKlTp+qOO+5Qw4YNNWjQIEVEROjkyZNauHChDh48qC1btnixTAAAgP9yO8C0atVKcXFx+sc//qEnnnhCBQUF8vPzc83//YfaAQAAeItHjxJo06aNtm/frqysLKWmpiosLEzBwcHeqg0AAKBYXnmYY1BQkIKCgryxKQAAgMvyKMBs3LhRK1eu1PHjx5WdnV1omc1mU1xcnEfFAQAAFMftADN79mw98cQTioqK0k033aRrrrnGm3UBAABclNsBJiYmRo8++qheffVVb9YDAABwWW5/DsyZM2fUo0cPL5YCAABQMm4HmG7dumnbtm3erAUAAKBE3D6F9PDDD+uRRx5RVlaWOnfurLCwsCLrNG7c2JPaAAAAiuV2gOnSpYsk6YUXXtALL7wgm83mWmaMkc1m43lIAACgTLgdYDZv3uzNOgAAAErM7QDToUMHb9YBAABQYm5fxAsAAOArHgWYRYsWqW3btgoPD1doaGiRLwAAgLLgdoBZvHixhg0bpltuuUUpKSnq27ev7rvvPgUGBio8PFzjx4/3Zp0AAAAubgeYl156SU899ZRiYmIkSaNGjVJsbKzi4+NVrVo1VapUyWtFAgAA/JbbAebQoUNq06aN/P395e/vr/T0dElSSEiInnjiCR4xAAAAyozbAeaaa65RTk6OJKlmzZr67rvvXMucTqdOnz7teXUAAADFcPs26qZNm+rbb7/V3Xffre7du2vq1KkqKChQQECAnn/+ebVs2dKbdQIAALi4HWAmTpyohIQESdKzzz6rhIQEjR07VgUFBWrWrJneeustrxUJAADwW24HmJYtW7pGWcLCwvT+++8rJydHOTk53EINAADKlNvXwAwePFjx8fGF5tntdoWGhiohIUGDBw/2uDgAAIDiuB1g3n77bSUnJxe7LCUlRe+8847bRQEAAFyKR5/E+9snUP/WoUOHdO2113qyaQAAgIsq1TUwb775pt58801JF8LLgAEDFBQUVGid7OxsHTlyRH369PFelQAAAL9RqgATGRmpJk2aSJL279+v+vXrq1q1aoXWCQwM1E033aQhQ4Z4r0oAAIDfKFWAiY6OVnR0tGv6qaeeUr169bxeFAAAwKW4fRt1bGysN+sAAAAoMY9uo77//vuLXdavXz8NHz7cre2mp6frgQceKPQ064SEBI0fP169e/fW6NGj9c0337i1bQAAcHVwO8B8/PHH6tWrV7HL7rvvPn300UdubTc2Nla1atVyTefn52vatGlq3ry5li1bpn79+mnmzJlKS0tza/sAAMD63A4wycnJRS7g/dW1116rU6dOlXqb+/fv18mTJ3XXXXe55u3bt085OTnq3bu3AgIC1K5dO9WuXVvbt293t3QAAGBxbgeYmjVr6osvvih22RdffKGIiIhSbS8vL09z587VyJEjC32+zNGjRxUVFSU/v/+WWq9ePddzmAAAwB+P2xfx9u/fXzNmzND111+vvn37uua/9957eu655zRmzJhSbW/VqlW67bbbVLduXf3888+u+VlZWXI4HIXW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V14x2dnZ5vDhw6ZHjx5m0qRJ5sSJEyYrK8uMGzfOvPvuu8YYY06fPm0GDBhgPv/8c5Ofn29++OEH079/f3P06FFjzIW/SX369DHffPONKSgocP0emDVrljHGmOTkZHP//febTZs2mdzcXHP+/Hnzww8/GGN812NjjOEUUhk5dOiQjh49qg4dOqhatWq6+eabtWnTpouuf/3116t9+/by8/OT3W4vtOzLL79UcHCw+vbtK7vdLrvdrgYNGkiSKlWqpDZt2shutysoKEi9e/fWgQMHynTffOVSPa1QoYKSkpJ05swZBQYGuvrze7fccovq1q0rPz8/RUVFqX379tq/f/+V3I0yM3/+fPXv39/1VdJTSGFhYerZs6cqVKggu92uLVu2qF+/frr22mvlcDg0aNAgffbZZ8rLy3O9pnfv3goLC1NYWJj69u2rTz/9VJK0YcMGde7cWQ0aNJCfn5+aNWumunXravfu3WWyz5fTs2dPHTp0yK3vcUl+hm+88Ua1aNFC/v7+at++vZKTk9W/f3/Z7XbVr19f4eHhOnLkiCTpP//5jwYOHKjq1aurQoUK6t+/vw4dOqTk5GTX9u677z6FhYUV+R0gXejtwIEDVadOHdlsNkVGRio8PFyS1LRpU0VGRspms+nmm29W48aNy/S4Tk9PV2hoqCpUKDqIX7lyZaWnp2vjxo2644471KxZM/n7+ys0NNQ1gnC5XnTs2FGhoaHy9/dXdHS08vPzdezYMdd73HjjjWrVqpX8/f115513KiUlRenp6UVqqVGjhho1aqSAgACFhoaqe/fuV+T3Y3BwsGbNmiW73a633npLDz30kJ588kmdPHmyxNuIi4tThw4dJF3ox6efflroZ1CS+vXrJ7vdruuvv17XXXedGjVqpMjISFWsWFHNmzfXzz//LOnCtUq33XabWrZsKX9/f9WvX18tW7bU9u3bXdtq1qyZGjZsKJvNVuT427Jlixo0aKBOnTopICBAwcHBql+/viTf9VjiFFKZiYuL00033aTq1atLunAAvvPOOxo8eHCx6//6i6g4ycnJF/1AopycHM2bN0979+51nXfOyspSXl6ea0j/anGpno4ZM0ZLly7V3/72N9cQeufOnYts48cff9TChQuVkJCg/Px85eXlqWXLlld6V8rEkCFD1LVr10Lz9u3bd9nXVa1atdD1WGfOnHH1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AAAshxEYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAFdcWlqannnmmSIPiDty5IhsNlupnlvkbRerDUD5QoABcMWlpaVp6tSpRUJCRESEPv/8c915550+quzitQEoX3iYI4Byw263q2XLlr4uA4AFMAIDoJDPP/9cXbp0UWhoqEJCQtSiRQt9/PHHkqQzZ85o8ODBqlq1qoKCgtS6dWtt3bq10Os7duyoe++9VytXrlT9+vVVqVIl3Xnnnfrpp58kXThNVLduXUkXnnxts9lks9l05MiRYk8hRUVF6dFHH1VMTIzq1Kmja665Rj169FBycnKh901LS9OoUaMUERHhejLyxo0bvVYbgPKFAAPAZfv27erYsaNycnI0b948rVq1StHR0Tp69KicTqe6du2qDz74QC+88ILee+89VapUSZ07d9aePXsKbefrr7/W7Nmz9fzzz+vtt9/W4cOHNXDgQEkXThOtXr1akvTcc8/p888/1+eff66IiIiL1rVu3TqtW7dOMTExmjNnjj799FM99thjruW5ubnq3Lmz/v3vf2vGjBlat26dGjRooHvuuUf79u0r09oA+IgBgP+vdevWpkGDBiY/P7/Isvfff99IMhs2bHDNy83NNbVr1za9evVyzevQoYNxOBwmKSnJNS82NtZIMseOHTPGGBMfH28kmffee6/QexQ3v06dOua6664z2dnZrnlTpkwxAQEBxul0GmOMWbBggalQoYI5cOBAoe21aNHC9OnTxyu1AShfGIEBIEnKzMzUzp079dBDD8nf37/I8s8++0yhoaG6++67XfMCAgLUq1cvbdu2rdC6t99+u6pVq+aabtCggSTp+PHjbtXWoUMH2e32QtvLy8tTUlKSJGnjxo269dZbdcMNNyg/P9/11blzZ3355ZdlWhsA3+AiXgCSpNTUVBUUFCgyMvKiy8PDw4vMr169us6cOVNoXlhYWKHpwMBASVJ2drZbtV1ueykpKfrqq68UEBBQ5LW/D2Perg2AbxBgAEi68Ifdz89PJ0+eLHZ5lSpVXCMev3Xq1ClVqVKlrMu7pCpVqqhhw4aaP3++T+sAcOVwCgmAJMnhcKhVq1ZauHChnE5nkeVt27ZVenp6oTt78vPztWbNGrVt27ZU7+XtUY+77rpLP//8syIjI9W0adMiX76sDUDZYAQGgMvzzz+vO++8U3fddZdGjRqlypUra+/evapataoeeughNW/eXAMHDtTzzz+v6tWr67XXXlNiYqImTZpUqvepUaOGwsLCtGzZMtWtW1d2u10NGzZ0u+6//vWvmjt3rjp27Kjx48frhhtuUFpamr766ivl5uZq5syZHtf2a7ABUD4wAgPApW3bttqyZYtsNpsGDRqkXr16ac2aNapTp478/f314Ycf6p577tGECRN03333uUZkmjRpUqr38fPzU2xsrOLj49WpUyc1a9bsoqeuSsJut+uTTz7RvffeqxkzZqhLly4aNWqUdu/eXerRIW/XBqBs2IwxxtdFAAAAlAYjMAAAwHIIMAAAwHIIMAAAwHIIMAAAwHIIMAAAwHIIMAAAwHIIMAAAwHIIMAAAwHIIMAAAwHIIMAAAwHIIMAAAwHL+H+/xPZquYq3aAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "(\n", " ggplot(df)\n", " + aes(x='continent', y='life_expectancy')\n", " + geom_bar(stat='summary', fun_y=np.median)\n", ")" ] }, { "cell_type": "markdown", "id": "a9f1f383", "metadata": {}, "source": [ "## Aggregate bar chart (count)\n", "\n", "Plotting a bar chart of counts is similar to how we did the median, but we use `stat='count'` instead of `stat='summary'`." ] }, { "cell_type": "code", "execution_count": 102, "id": "fc5b0ffa", "metadata": {}, "outputs": [ { "data": { "text/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", "
countrycontinentgdp_per_capitalife_expectancypopulation
0AfghanistanAsia66354.86322856302
1AlbaniaEurope419574.2003071856
\n", "
" ], "text/plain": [ " country continent gdp_per_capita life_expectancy population\n", "0 Afghanistan Asia 663 54.863 22856302\n", "1 Albania Europe 4195 74.200 3071856" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('countries.csv')\n", "df.head(2)" ] }, { "cell_type": "code", "execution_count": 104, "id": "8b9d0872", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGuCAYAAABY0OakAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAriklEQVR4nO3deXSTZdrH8V9a2tAGamGgWGBY9Myg4IbsewGrh5elgIqsbohgGSsKDILMACqigCO74gFRFBFUUHBcEARlFQWcQZRNoWyVFmgpS7ek9/sHh4y1LKVpeXrD93OO50yepOHKRdr58iRtXcYYIwAAAEsEOT0AAADApSBeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFillNMDFIcjR444PUKhuVwuhYWFKSMjQ/z8wEvH/gLD/gLD/gLD/gJzJeyvQoUKBbodZ15KmKCgIIWHhysoiL+awmB/gWF/gWF/gWF/gbma9nflP0IAAHBFIV4AAIBViBcAAGAV4gUAAFiFeAEAAFYhXgAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGCVUk4PUBIkJCQ4PUKJNmXKFKdHAADAjzMvAADAKsQLAACwCvECAACsQrwAAACrEC8AAMAqxAsAALAK8QIAAKxCvAAAAKsQLwAAwCrECwAAsArxAgAArEK8AAAAqxAvAADAKsQLAACwCvECAACsQrwAAACrEC8AAMAqxAsAALAK8QIAAKxCvAAAAKsQLwAAwCrECwAAsArxAgAArEK8AAAAq5RyeoDiEBoaKrfb7fQYV4yyZcs6PUKBuVwuSZLH45ExxuFp7MP+AsP+AsP+AnM17e+KjJfs7GxlZ2c7PcYV48SJE06PUGDBwcEKDQ3VqVOn5PP5nB7HOuwvMOwvMOwvMFfC/gp64oGXjQAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFjlivzdRri8EhISnB6hRJsyZYrTIwDAFYUzLwAAwCrECwAAsArxAgAArEK8AAAAqxAvAADAKsQLAACwCvECAACsQrwAAACrEC8AAMAqxAsAALAK8QIAAKxCvAAAAKsQLwAAwCrECwAAsArxAgAArEK8AAAAqxAvAADAKsQLAACwCvECAACsQrwAAACrEC8AAMAqxAsAALAK8QIAAKxCvAAAAKsQLwAAwCrECwAAsArxAgAArEK8AAAAqxAvAADAKsQLAACwCvECAACsQrwAAACrEC8AAMAqxAsAALAK8QIAAKxCvAAAAKuUcnoA4GqXkJDg9Agl2pQpU5weAUAJw5kXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFilRH2rdHp6uh577DFFR0dr4sSJkqTExERNnTpVe/fuVaVKlfToo4/q1ltvdXhSAADglBJ15mXOnDn685//7L/s9Xr13HPPqWHDhpo/f766d++ucePGKS0tzbkhAQCAo0pMvPz44486dOiQ7rjjDv+xrVu3KisrS/fcc49CQkLUokULVatWTWvXrnVwUgAA4KQSES85OTmaOXOmBgwYIJfL5T++b98+1ahRQ0FB/xvzuuuuU2JiohNjAgCAEqBEvOflww8/1K233qqaNWvq119/9R/PyMiQx+PJc1uPx6Pk5OQ8x5KSkpSUlOS/7Ha7Vbly5eId+ioSHBzs9AhWY3+BsWl/Z2e1aeaShP0F5mran+PxcujQIa1YsUKTJ0/Od11YWJhOnTqV59ipU6cUFhaW59jMmTM1ZswY/+URI0Zo7NixxTPwVahcuXJOj2A19hcYG/cXERHh9AhWY3+BuRr253i8/Pzzz0pNTdWAAQMkSdnZ2crOztb999+v+Ph4JSYmKjc31//S0Z49e9SyZcs899G/f3916tTJf9ntdis1NfXyPYgrHLsMDPsLjE37Cw4OVkREhNLT0+Xz+ZwexzrsLzBXwv4K+o8Vx+OlefPmuv322/2XV69erZUrV+qf//ynypYtq9DQUC1atEhxcXH69ttvlZiYqGbNmuW5j+joaEVHR/svHzlyxNq/uJKIXQaG/QXGxv35fD4r5y4p2F9grob9OR4vbrdbbrfbf9nj8Sg4ONhfXyNHjtS0adP03nvvKSoqSsOHD1dkZKRD0wIAAKc5Hi9/1LZtW7Vt29Z/uUaNGv4fWAcAAFAivlUaAACgoIgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFiFeAEAAFYhXgAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFiFeAEAAFYhXgAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFiFeAEAAFYhXgAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFiFeAEAAFYhXgAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFilUPHSpk0bbd++/ZzX7dy5U23atAloKAAAgPMpVLysWrVK6enp57wuPT1d33zzTUBDAQAAnE+hXzZyuVznPL5u3TpFRUUVeiAAAIALKVXQG44bN07jxo2TdCZcWrduraCgvO2TlZUlr9er+Pj4op3yEoWGhsrtdjs6w5WkbNmyTo9gNfYXGJv2d/YfdR6PR8YYh6exD/sLzNW0vwLHS9OmTTV48GAZY/Tss8+qR48eqlq1ap7bhIaG6sYbb1THjh2LfNBLkZ2drezsbEdnuJKcOHHC6RGsxv4CY9P+goODFRoaqlOnTsnn8zk9jnXYX2CuhP0V9MRDgeOlVatWatWqlaQzddevXz9Vrly5cNMBAAAUUoHj5fdGjRpV1HMAAAAUSKHiJTc3V7NmzdIHH3ygAwcOKDMzM8/1LpdLv/zyS5EMCAAA8HuFipdhw4bp5ZdfVqtWrdS6dWuFhoYW9VwAAADnVKh4mTdvnsaMGaN//OMfRT0PAADABRXq57xkZmaqadOmRT0LAADARRUqXnr16qWlS5cW9SwAAAAXVaiXjRo3bqyRI0fq8OHDio2NVWRkZL7bdO3aNdDZAAAA8ilUvPTp00eSlJiYqAULFuS73uVyWfsDcgAAQMlWqHjZs2dPUc8BAABQIIWKl+rVqxf1HAAAAAVSqHjZt2/fRW9TrVq1wtw1AADABRUqXmrUqOH/7ZXnw3teAABAcShUvCxevDjfsdTUVH3xxRfasGGDXnzxxYAHAwAAOJdCxUtcXNw5jz/44IN66qmn9PXXX+u+++4LaDAAAIBzKdQPqbuQ//u//9N7771X1HcLAAAgqRjiZd26dSpdunRR3y0AAICkQr5slJCQkO9Ydna2fv75Z61Zs0ZDhgwJeDAAAIBzKVS8nOv3GpUuXVpVq1bVjBkz9MgjjwQ8GAAAwLnwE3YBAIBVivw9LwAAAMWp0PGyZcsW3XvvvYqOjpbb7VZ0dLS6deumH374oQjHAwAAyKtQLxutXr1asbGxuvbaa9WjRw9VqlRJhw8f1uLFi9WkSRN9+eWXat68eVHPCgAAULh4efrppxUTE6NPPvlEpUr97y4mTJig9u3b6+mnn9aaNWuKbEgAAICzCvWy0ZYtW5SQkJAnXCQpODhYCQkJ2rx5c5EMBwAA8EeFihePx6Pk5ORzXnf48GF5PJ6AhgIAADifQsVLx44dNWzYMC1fvjzP8eXLl2v48OHq1KlTkQwHAADwR4V6z8vLL7+sbdu26a677lJERISioqKUnJys9PR0NWjQQBMnTizqOQEAACQVMl7KlSun9evX65NPPtGaNWuUmpqq8uXLq3nz5mrfvr2CgvjxMQAAoHgUKl5WrFihffv26aGHHsr3EtGbb76p6tWrq3Xr1kUyIAAAwO8V6hTJyJEjdfjw4XNel5KSopEjRwY0FAAAwPkUKl62bdum+vXrn/O622+/Xdu2bQtoKAAAgPMpVLy4XC4dP378nNelpqbK5/MFNBQAAMD5FCpeGjVqpOnTp8sYk+e4MUYzZsxQo0aNimQ4AACAPyrUG3bHjBmj1q1b65ZbbtGDDz6o6OhoHTp0SHPnztXOnTu1atWqIh4TAADgjELFS5MmTbRixQr9/e9/17Bhw5Sbm6ugoCD/8caNGxf1nAAAAJIKGS+S1KxZM61du1YZGRlKTU1VZGSkwsPDi3I2AACAfAodL2eFhYUpLCysKGYBAAC4KH4ULgAAsArxAgAArEK8AAAAqxAvAADAKsQLAACwCvECAACsQrwAAACrEC8AAMAqxAsAALBKwD9hFwCclJCQ4PQIJdqUKVOcHgEocpx5AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAVx3/OS05Ojl577TX95z//0YkTJ1ShQgV169ZNrVq1kiQlJiZq6tSp2rt3rypVqqRHH31Ut956q8NTAwAApzh+5sXn86l8+fJ6/vnn9d5772ngwIF69dVXtX37dnm9Xj333HNq2LCh5s+fr+7du2vcuHFKS0tzemwAAOAQx+OldOnS6tWrl6699lq5XC7Vrl1bN954o37++Wdt3bpVWVlZuueeexQSEqIWLVqoWrVqWrt2rdNjAwAAhzgeL3+UmZmp3bt3q3r16tq3b59q1KihoKD/jXndddcpMTHRwQkBAICTHH/Py+/l5uZq0qRJ+stf/qK6detq586d8ng8eW7j8XiUnJyc51hSUpKSkpL8l91utypXrnxZZr4aBAcHOz2C1dhfYNhfYGza39lZbZq5JLma9ldi4sUYoxkzZujYsWMaM2aMXC6XwsLCdOrUqTy3O3XqlMLCwvIcmzlzpsaMGeO/PGLECI0dO/ayzH01KFeunNMjWI39BYb9BcbG/UVERDg9gtWuhv2ViHgxxui1117Tnj179Nxzz/njpFq1avrwww+Vm5vrf+loz549atmyZZ6P79+/vzp16uS/7Ha7lZqaevkewBWOXQaG/QWG/QXGpv0FBwcrIiJC6enp8vl8To9jnSthfwWN7RIRLzNnztSOHTv0/PPPKzw83H/85ptvVmhoqBYtWqS4uDh9++23SkxMVLNmzfJ8fHR0tKKjo/2Xjxw5Yu1fXEnELgPD/gLD/gJj4/58Pp+Vc5cUV8P+HI+X5ORkffrppwoJCdHDDz/sP37PPfeoW7duGjlypKZNm6b33ntPUVFRGj58uCIjI50bGAAAOMrxeImKitKSJUvOe32NGjU0ceLEyzgRAAAoyUrct0oDAABcCPECAACsQrwAAACrEC8AAMAqxAsAALAK8QIAAKxCvAAAAKsQLwAAwCrECwAAsArxAgAArEK8AAAAqxAvAADAKsQLAACwCvECAACsQrwAAACrEC8AAMAqxAsAALAK8QIAAKxCvAAAAKsQLwAAwCrECwAAsArxAgAArEK8AAAAqxAvAADAKsQLAACwCvECAACsQrwAAACrEC8AAMAqxAsAALAK8QIAAKxCvAAAAKsQLwAAwCrECwAAsArxAgAArEK8AAAAqxAvAADAKsQLAACwCvECAACsQrwAAACrEC8AAMAqxAsAALAK8QIAAKxCvAAAAKsQLwAAwCrECwAAsEoppwcAAMBWCQkJTo9Qok2ZMqVY7pczLwAAwCrECwAAsArxAgAArEK8AAAAqxAvAADAKsQLAACwCvECAACsQrwAAACrEC8AAMAqxAsAALAK8QIAAKxyRf5uo9DQULndbqfHuGKULVvW6RGsxv4Cw/4Cc7H9PfTQQ5dpEjvNmTPH6RGsVlyfv1dkvGRnZys7O9vpMa4YJ06ccHoEq7G/wLC/wLC/wLC/wFzq/gp64oGXjQAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFiFeAEAAFYhXgAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFiFeAEAAFYhXgAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFiFeAEAAFYhXgAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFiFeAEAAFYhXgAAgFWIFwAAYBXiBQAAWIV4AQAAViFeAACAVYgXAABgFeIFAABYpZTTAxTEyZMnNX36dG3evFlhYWHq0qWL4uLinB4LAAA4wIp4mTlzpnJycjRnzhwlJyfrH//4h6pWrap69eo5PRoAALjMSvzLRpmZmVq7dq369Omj8PBw1ahRQ3feeae+/PJLp0cDAAAOKPHxcvDgQRljVL16df+xmjVrat++fQ5OBQAAnFLiXzbKzMxUeHh4nmMej0cZGRn+y0lJSUpKSvJfdrvdqly58mWb8UoXHBzs9AhWY3+BYX+BYX+BYX+BKa79uYwxpljuuYj88ssvGjp0qBYtWuQ/tnbtWs2bN08zZsyQJI0ePVpjxozxXz9ixAiNHTv2ss8KAACKX4k/81KlShVJ0r59+1StWjVJ0p49e/z/W5L69++vTp06+S+73W6lpqZe3kGLSHBwsCIiIpSeni6fz+f0ONZhf4Fhf4Fhf4Fhf4G5EvZXrly5At2uxMdL6dKl1axZM7399tt68sknlZKSomXLlumJJ57w3yY6OlrR0dH+y0eOHLH2L+4sn89n/WNwEvsLDPsLDPsLDPsLzNWwvxIfL9KZMyvTpk3Tgw8+qLCwMN199918mzQAAFcpK+KlTJkyevrpp50eAwAAlAAl/lulAQAAfo94AQAAViFeAACAVYgXAABgFeIFAABYhXgBAABWIV4AAIBViBcAAGAV4gUAAFiFeAEAAFYhXgAAgFWIFwAAYBWXMcY4PQT+JykpSTNnzlT//v0VHR3t9DjWYX+BYX+BYX+BYX+BuZr2x5mXEiYpKUljxoxRUlKS06NYif0Fhv0Fhv0Fhv0F5mraH/ECAACsQrwAAACrEC8lTHR0tEaNGnXFv15ZXNhfYNhfYNhfYNhfYK6m/fGGXQAAYBXOvAAAAKsQL5fZ8ePH9cwzz+i+++7T1KlTz3mbVatW6ZlnnrnMk12ZunXrpoMHDzo9BnDJBg4cqB9++MHpMawyevRoLVu2zOkxrLZw4UJNmjTJ6TEuipeNitHYsWO1adMmzZkzR9dcc42kM0+MHTt2aOTIkXK5XA5PaJ9z7fRqN2LECO3YsUPBwcH+Y1WqVNErr7zi4FTOGTFihH766SdNnz5dVapUkSQdOHBA8fHxWrJkySXdF8+381u5cqU++ugjHTx4UKVLl1a9evX0wAMPqHz58k6P5qiff/5Zb731lhITEyWdeR9Kz549Vb9+/QLfx4YNG/TCCy+ob9++iouLK65RrcaZl2KSlpam77//XmFhYVq1apX/+OHDh1WtWrXzhovP57tME9rnfDuF9Mgjj2jhwoX+/woTLlfSc8/j8WjevHkB3YdTzzcb/h6WLFmi2bNnq1evXpo/f74mT54sY4yGDRumkydPOj2eY06fPq1nn31WsbGxeueddzR37lz17dtX4eHhl3Q/y5cvV9myZfXVV18V06TnZsNz76xSTg9wpVq1apWio6PVpk0brVixQnFxcfrXv/6l1atXy+Vy6d///rcGDRqkvXv3au/evfJ4PNqwYYO6du2q8uXL67PPPtPEiRMlnflX4+zZs7Vz505JUosWLTRgwACdPn1aL7/8snbu3Cmv16sbbrhB8fHxqlixopMPvdica6eStGvXLs2cOVP79+9XSEiI6tatq8GDB0uSOnXqpBkzZqhq1aratGmT3n77bSUlJcnj8ahNmzbq3bu3kw+pWG3dulUTJkzQ3Llz/ceGDBmidu3aqW3btlqxYoU+++wz3XTTTVqxYoUaN26sRx99VO+8846++eYbeb1e1atXT/369ZPH45F0Zp+PPvqolixZopMnT6pp06bq37+/QkJCJEmbN2/WO++8o6SkJFWqVEn9+vVTnTp1Lvtjb9++vT7++GP98ssvuv766wt1H+d7vknSu+++q8TERIWHh2vdunWKjIzU4MGDdeDAAc2bN0+ZmZnq1q2b/2OMMfr444/1+eefKz09XbVq1dLAgQNVoUIFSWf2OmDAAC1dulRHjx7VwoUL9cgjj+ixxx5TvXr1lJubq48//lhffPGFUlNTVaFCBT311FO6/vrr9dVXX+nDDz/UkSNHFBERoc6dO6t9+/aBL/E8Tp8+rXnz5mngwIFq2LChJOlPf/qTBg0apMcff1xLlixRz549tWnTJs2bN0+HDh1SeHi4evXqpbZt2150F7Nnz9batWt16tQpRUdH65FHHtFNN92UZ+9ly5bVmjVrFBERofj4eN12222Szpx1a9Gihdq1a6fffvtN06ZN0549eyRJt912mx577DGVKVOm2HZz8OBB+Xw+tW3bVpIUHBx8yc//1NRUbdq0SUOHDtX48ePzPIcPHz6sfv366YknntD8+fN14sQJdenSRTExMXrllVe0d+9e1a5dW0OHDvUH065duzR79mwlJiaqXLly6t27t5o2bSpJmjRpkkJDQ5WWlqYffvhBAwcO1MGDB3Xw4EENHTpUkrRz50698cYbSkxMVEhIiDp27Kh7773Xkf3mYVAs/va3v5kFCxaY5ORk06lTJ7N7925jjDGvvPKKefPNN/23mzdvnuncubP5+uuvjc/nM5mZmWb58uVm8ODBxhhjTp8+bR566CGzYMECk5mZaTIzM822bduMMcacOHHCrFmzxmRmZprTp0+b8ePHmzFjxlz+B3uZnG+nQ4YMMQsWLDA+n89kZWX592OMMR07djT79+83xhizdetW8+uvvxqfz2f27Nlj+vTpY9asWePIYylKw4cPN59++mm+4//9739Nnz598hwbPHiwWb58uTHGmOXLl5u4uDjz4YcfmpycHJOZmWnmzZtnnnjiCXPkyBFz8uRJ89xzz5mJEyf6P75jx45m6NChJjU11aSmpponn3zSvPPOO8YYY3799VfTs2dPs23bNuPz+czGjRtNz549zfHjx4vx0ed3dh9z5841o0aNMsYYs3//ftOxY8dLup/zPd+MOfN526VLF7Nhwwbj9XrNG2+8YR5++GEzffp0k5mZabZv3266dOlikpOTjTHGLF261AwaNMj89ttvJicnx7z99tvm73//u//+OnbsaIYPH25SU1NNZmamMcaYvn37mu+//94YY8xHH31kBgwYYPbu3Wtyc3PNwYMHzeHDh40xxnz33Xfm4MGDJjc31/z444/m7rvvNjt37iz0/i5m06ZNJi4uzuTk5OS77p133jFDhgwxu3btMt26dTMbN240Xq/XHD9+3L+/i+1i5cqV5vjx48br9ZqPPvrI9O7d27+Ts3tft26d//qHHnrI/7G//1xISkoymzdvNtnZ2eb48eNm+PDh5tVXXy22vRhjzKlTp0zPnj3NhAkTzMaNG01aWtol38eiRYtM//79jTHGjBw50sycOdN/3W+//WY6duxoJk2aZDIzM83u3btN586dzYgRI8zBgwdNRkaGGTx4sFmwYIExxpijR4+anj17mvXr1xuv12u2b99uevToYfbt22eMOfP/R/fee6/5z3/+Y3Jzc/1fA8aPH2+MMSYlJcXcd999Zvny5SY7O9ucOnXKbN++3RjjzH5/j5eNisGuXbu0b98+tWrVShUrVlSdOnW0fPny897++uuvV8uWLRUUFCS3253nuu+++07h4eHq1q2b3G633G63ateuLUkqU6aMmjVrJrfbrbCwMN1zzz3atm1bsT42p1xop6VKlVJycrKOHTum0NBQ/37+6KabblLNmjUVFBSkGjVqqGXLlvrxxx8v58MoNrNnz1aPHj38/xX0ZaPIyEh16dJFpUqVktvt1qpVq9S9e3f96U9/ksfj0YMPPqjVq1crJyfH/zH33HOPIiMjFRkZqW7duunrr7+WJH3++eeKjY1V7dq1FRQUpAYNGqhmzZr6/vvvi+UxX0yXLl20a9euQv0dF+Rz+IYbblCjRo0UHBysli1bKiUlRT169JDb7VatWrUUFRWlvXv3SpI+++wz9e7dW5UqVVKpUqXUo0cP7dq1SykpKf77u/vuuxUZGZnva4B0Zre9e/dW9erV5XK5VLlyZUVFRUmS6tevr8qVK8vlcqlOnTq6/fbbi/V5nZ6eroiICJUqlf/Efbly5ZSenq5ly5apdevWatCggYKDgxUREeE/e3CxXcTExCgiIkLBwcGKi4uT1+vV/v37/X/GDTfcoCZNmig4OFht2rTRkSNHlJ6enm+Wa6+9VnXr1lVISIgiIiLUqVOnYv/6GB4ervHjx8vtduu1117TAw88oGeeeUaHDh0q8H2sWLFCrVq1knRmF19//XWezz9J6t69u9xut66//npVrVpVdevWVeXKlVW6dGk1bNhQv/76q6Qz70u69dZb1bhxYwUHB6tWrVpq3Lix1q5d67+vBg0a6JZbbpHL5cr33Fu1apVq166ttm3bKiQkROHh4apVq5YkZ/b7e7xs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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='continent')\n", " + geom_bar(stat='count')\n", ")" ] }, { "cell_type": "markdown", "id": "954d294b", "metadata": {}, "source": [ "## Horizontal bar charts\n", "\n", "To make a horizontal bar graph, you just add `coord_flip()` to the end of your plot." ] }, { "cell_type": "code", "execution_count": 147, "id": "4fe69f43", "metadata": {}, "outputs": [ { "data": { "text/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", "
speciesnum_animals
0cat8
1dog22
2rabbit2
\n", "
" ], "text/plain": [ " species num_animals\n", "0 cat 8\n", "1 dog 22\n", "2 rabbit 2" ] }, "execution_count": 147, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame([\n", " { 'species': 'cat', 'num_animals': 8 },\n", " { 'species': 'dog', 'num_animals': 22 },\n", " { 'species': 'rabbit', 'num_animals': 2 },\n", "])\n", "df" ] }, { "cell_type": "code", "execution_count": 148, "id": "9d69c655", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAGvCAYAAAC6i8qGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAkfElEQVR4nO3deXRU9d3H8c9kspAEAoEsJiAiBJC9QNWwibJVtKyl1AUBBUGJBxC0BJFCVAQLCA1IpVXZhKJW1CIqKjsUEBEQLK4kkSVKAiMJezK5zx8+TE3ZwmQmd8jv/TrHc5i5N3e+lx8j79wZJg7LsiwBAAAYLMjuAQAAAOxGEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwXrDdA1wtcnNz/XJch8Oh8PBwnTp1SuXhMzJDQ0N19uxZu8cotfK2LhJrE6hYl8DF2gSmK12XmJiYEu3HFSKbBQUFKSIiQkFB5WMpwsLC7B7BJ8rbukisTaBiXQIXaxOY/LUu5eN3BwAAoBQIIgAAYDyCCAAAGI8gAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEIIgAAYDyCCAAAGI8gAgAAxgu2ewBI99xzj90jXFZ6errdIwAA4DdcIQIAAMYjiAAAgPEIIgAAYDyCCAAAGI8gAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEIIgAAYDyCCAAAGI8gAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEIIgAAYDyCCAAAGI8gAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEIIgAAYDyCCAAAGI8gAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGu6qCaPfu3erfv/9Fty9ZskRTp0696PaJEyfqww8/9MdoAADgKnZVBVFpTZw4UV26dJEkrVq1So899pjNEwEAgEAQUEFUVFQky7LsHgMAABgm2O4BBg8erK5du2rjxo36/vvvNWzYMC1btky5ubmKiopSz549deeddxb7mmXLlumtt95ScHCwevXqpe7du3u2FRQUaPr06frkk08UExOjhx9+WI0bN5YkPfHEE2rXrp0aNGigOXPmyO12q2/fvpKkhQsXqkKFCmV34gAAIGAExBWiNWvWaMyYMXrttddUsWJFjRs3TkuXLtXIkSM1b948ffPNN5598/Ly9OOPP+rll1/27Ldr1y7P9k8++UQtWrTQkiVL1Lt3b02aNEnHjx8v9ni1atXSsGHDlJSUpNdff12vv/46MQQAgMFsv0IkSXfeeaeuueYaSdLNN9/sub9Ro0Zq0aKF9uzZo7p160qSLMtS//79FRoaqqSkJHXo0EHr169Xs2bNJEnXX3+9brvtNklSx44d9a9//Uvbtm3z3FdS2dnZys7O9twOCwtTYmJiqc7zQpxOp8+P6Q8lndPhcFw153Qp586hPJzLOaxNYGJdAhdrE5j8tS4BEURxcXGeX2/fvl3/+Mc/dOjQIVmWpTNnzqh69eqe7REREYqMjPTcjo2N1Y4dO4rd/t9jHz169Ipnmjt3rtLS0jy3n3jiCU2aNOmKj1NeREdHl3jf0NBQP05StqKiouwewadYm8DEugQu1iYw+WNdAiKIzikoKNDkyZM1fPhwtW7dWsHBwXr22WeL7XPy5EmdPHlSERERkqTc3FxVq1bNsz0nJ6fY/jk5OWrduvUVzzJ06NBi700KCwuTy+W64uNcztVS7CU998jISJ04ccLP0/if0+lUVFSU8vLy5Ha77R7HJ1ibwMS6BC7WJjBd6bqU9Bv6gAuiwsJCVa5cWU6nUzt27NCOHTuKXSFyOBxauHChBg0apO+//16rV6/WH//4R8/2jIwMrVu3Tm3bttX69ev1ww8/6Ne//vV5j1WlShUdPXpUBQUFCgkJOW97QkKCEhISPLdzc3PLxR8kb5X03C3LKle/T263u9ycD2sTmFiXwMXaBCZ/rUtABVFERIQefPBBTZs2TYWFhbrxxht10003FdsnKipKcXFxeuCBB+R0OtW3b1/P+4ck6aabbtKnn36qOXPmKCYmRmPHjlWlSpXOe6ymTZvq+uuv14ABA2RZlubNm8cbqwEAMJTD4oN/SiQ3N9cvx3U6nUpJSfHLsX0pPT29RPtVqlRJ+fn5fp7G/5xOp6Kjo+VyucrFd1QSaxOoWJfAxdoEpitdl5iYmBLtFxD/7B4AAMBOBBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwHkEEAACMRxABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwHkEEAACMRxABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwHkEEAACMRxABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwXrDdA0BasmSJXC6X3G633aMAAGAkrhABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwHj/LLADcc889do8AAICt0tPTbX18rhABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwHkEEAACMRxABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwnldBlJWVpd27d3tunzlzRpMmTVK/fv00f/58X80GAABQJrwKogcffFCLFi3y3B4zZozS0tL05ZdfasiQIZozZ47PBgQAAPA3r4Jo586dateunSSpsLBQCxYs0HPPPadPP/1UEydO1F//+lefDgkAAOBPXgVRfn6+KleuLEnaunWr8vLydNddd0mS2rZtq3379vluQgAAAD/zKohq1KihLVu2SJKWLVumhg0bKiEhQZLkcrkUERHhuwkBAAD8LNibLxo0aJCefPJJvfHGG9qxY4dmzJjh2bZlyxY1aNDAZwMCAAD4m1dBlJqaqsTERG3btk3Dhg3TwIEDPdtcLpcGDx7sq/kAAAD8zmFZlmX3EFeD3NxcvxzX6XQqJSXFL8cGAOBqkZ6eXqL9KlWqpPz8/BIfNyYmpkT7leqDGT/44AM9/fTTGjJkiL7//ntJ0vr163Xo0KHSHBYAAKBMefWSWU5Ojnr27KktW7bo2muv1f79+/XQQw+pZs2aeuWVVxQZGakXXnjB17MCAAD4hVdXiEaOHKmcnBzt2bNH3377rX75qlunTp20atUqnw0IAADgb15dIVqxYoX+/ve/q0GDBnK73cW2XXvttTpw4IBPhgMAACgLXl0hKiwsVGRk5AW3uVwuhYaGlmooAACAsuRVEN1888165ZVXLrht6dKlatOmTamGAgAAKEtevWT2zDPP6LbbbtMtt9yiPn36yOFw6O2339bkyZO1YsUKbdy40ddzAgAA+I1XV4hatWqlNWvWyOFwaPTo0bIsS5MmTVJ2drZWrVqlFi1a+HpOAAAAv/HqCpH0cxStW7dOp06dksvlUpUqVfgZZgAA4KrkdRCdEx4ervDwcF/MAgAAYIsSB9Hw4cP12GOPqWbNmho+fPgl93U4HPrLX/5S6uEAAADKQomDaPny5Ro0aJBq1qyp5cuXX3JfgggAAFxNShxEGRkZF/w1AADA1a5UP9wVAACgPPAqiGbNmqXU1NQLbktNTbXlB7suWLBAM2fOLPPHBQAAVz+vgmjOnDmqU6fOBbfVq1dPc+bMKdVQAAAAZcmrIMrKylLdunUvuK127drKzMwszUwAAABlyqvPIYqKilJGRoZuvfXW87bt27evTD6gMSMjQ7NmzdLBgwfVqFEjVatWzbNt+/btWrBggQ4fPqwaNWpo8ODBuuGGGyRJ+fn5mjVrlj7//HPFxsbq1ltv1fvvv6+XXnrJ7zMDAIDA5NUVoi5duigtLU379+8vdv+BAwf09NNPq2vXrj4Z7mIKCws1adIkJScna/HixerWrZvWrFkjSTp06JAmT56s++67T4sXL9Ydd9yhtLQ05eXlSZL+9re/SZLmzZuncePGafXq1X6dFQAABD6vrhBNmTJFycnJql+/vjp06KDExEQdOnRIq1evVmxsrCZPnuzrOYv58ssvdebMGfXp00dBQUFq3ry55+enbdiwQS1atNCNN94oSerQoYPee+89bdmyRR07dtSmTZs0Y8YMzydsd+3aVW+//fZ5j5Gdna3s7GzP7bCwMCUmJvr8XJxOp8+PCQDA1aakfx86HA6//N3pVRAlJiZq586dmj59ulavXq2vv/5a1apV0+jRo/Xoo4+qatWqvp6zmKNHj6pq1aoKCvrvBa7Y2FidOHFCR44cUVxcXLH94+PjdfToUeXl5amwsFAxMTGebb/89S/NnTtXaWlpnttPPPGEJk2a5OMzAQAAkhQdHV3ifUNDQ33++F7/LLOqVavaFghVq1bV0aNHVVRU5IminJwcRUREqFq1avruu++K7f/jjz+qWbNmioqKUnBwsHJzcxUZGSlJys3NveBjDB06VN27d/fcDgsLk8vl8vm5cIUIAACV+O/YyMhInThxosTHLWloleqDGV0ulzZs2KAlS5Z4TuT06dMqKioqzWEv64YbblBoaKiWLVumwsJC7dy5U5999pkkqW3btvrss8+0fft2ud1urVmzRgcPHlRycrKcTqdatWqlJUuW6NSpUzp8+LDef//9Cz5GQkKCWrRo4fkvPj5ebrfbL/8BAGC6kv6daVmWX/6O9eoKkWVZGjdunNLT03Xy5Ek5HA5t27ZN0dHR6t27t26++WZNmDDBm0OXSHBwsMaNG6fZs2fr9ddfV+PGjXXbbbepoKBA1atX15gxYzR//nzl5OQoMTFR48ePV1RUlKSfr/ykp6fr/vvvV2xsrG655RatXbvWb7MCAIDA51UQjR8/XrNnz9b06dPVsWNH1atXz7Ote/fueumll/waRNLPn3f0/PPPX3DbjTfe6HlT9f+KiorSk08+6bn9zjvvXPR9RAAAwAxeBdH8+fP17LPPaujQoeddjqpTp8557+EJJAcOHNCZM2dUu3ZtZWVlafny5erdu7fdYwEAABt5FURHjhxRgwYNLrjN7XaroKCgVEP505kzZzR16lTl5uYqKipK7du3129+8xu7xwIAADbyKojq1aunjz76SB07djxv29q1a9W4ceNSD+YvderU0Ysvvmj3GAAAIIB4FUSPPvqoHnzwQYWEhKhPnz6Sfn4pavPmzUpPT9f8+fN9OSMAAIBfeRVEAwcO1NGjRzVx4kQ9++yzkqSePXsqMjJSzzzzjPr27evTIQEAAPzJ6w9mHDVqlIYMGaJNmzbpyJEjqlq1qlq1aqXKlSv7cj4AAAC/8zqIJKlixYq8IRkAAFz1vA6i3NxczZgxQ1u3blV2drYSEhKUnJysESNGKDY21pczAgAA+JVXP7pj69atqlu3rmbPnq3KlSurffv2qly5smbNmqWkpCRt3brV13MCAAD4jVdXiFJSUtSoUSO99957nh+JIUnHjh1T165d9cgjj2jbtm0+GxIAAMCfvLpC9MUXXyg1NbVYDElS5cqVlZqaqj179vhkOAAAgLLgVRAlJSXpp59+uuC2Y8eOqXbt2qWZCQAAoEx5FURTp07VhAkTtG7dumL3r127VhMnTtS0adN8MhwAAEBZcFiWZV3pFzVp0kTZ2dlyuVyqXLmyYmNjlZOTo2PHjik6OlqJiYn/fQCHQ7t27fLp0HbIzc31y3GdTqdSUlL8cmwAAK4W6enpJdqvUqVKys/PL/FxY2JiSrSfV2+qbtmypRwOhzdfCgAAEHC8CqIL/ayykydP6tChQ6pTpw6xBAAAripevYdo2rRpSktL89zesGGDqlevrvr166tu3brat2+fzwYEAADwN6+C6KWXXlKNGjU8t0eNGqVGjRrpnXfeUUxMjFJTU302IAAAgL959ZLZ/v37lZSUJEk6ePCgtm/frnXr1qldu3YqLCzUww8/7NMhAQAA/MmrK0Th4eHKy8uTJK1atUoVK1ZU69atJUlVqlTRsWPHfDchAACAn3l1heimm27SlClTFBQUpKlTp6pr165yOp2SpO+++07Vq1f36ZAAAAD+5PWbqrOzs9WtWzcdP35ckyZN8mx77bXXPFeLAAAArgZeXSFq2LCh9u3bpyNHjqhatWrFtk2fPl3XXHONT4YDAAAoC14F0Tn/G0PSz59iDQAAcDXx6iUzAACA8oQgAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEIIgAAYDyCCAAAGI8gAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEclmVZdg9xNcjNzfXLcZ1Op6Kjo+VyueR2u/3yGGWpUqVKys/Pt3uMUitv6yKxNoGKdQlcrE1gutJ1iYmJKdF+XCECAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEIIgAAYDyCCAAAGI8gAgAAxiOIAACA8QgiAABgvGC7B4B0zz332D0C4JGenm73CABQ5rhCBAAAjEcQAQAA4xFEAADAeAQRAAAwHkEEAACMRxABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwHkEEAACMRxABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwHkEEAACMRxABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwHkEEAACMRxABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMZHUQzZ87UggUL7B4DAADYzOggAgAAkKRguwfwlSNHjuiVV17R559/rsLCQjVu3Fjjxo3T1KlTtWfPHp05c0a1atXSQw89pFq1aum9997TunXr5HA4tGLFCtWuXVtTpkyx+zQAAIANykUQud1uPfPMM6pXr57mzp2r0NBQffnll5Kk5s2bKyUlRSEhIVq4cKGmTZum2bNn64477tDXX3+t6OhoDRgwwOYzAAAAdioXQfTNN9/oxx9/1J///GeFhIRIkho3bixJ6tSpk2e/u+66S++8847y8vIUFRV1yWNmZ2crOzvbczssLEyJiYk+n93pdPr8mEBpBPqfyXPzBfqcJeVwOMrFuZS3dZFYm0Dlr3UpF0GUm5ur2NhYTwyd43a79eqrr2rTpk06duyYgoJ+fstUSYJo7ty5SktL89x+4oknNGnSJN8PDwSY6Ohou0cokcs9h68moaGhdo/gM+VpXSTWJlD5Y13KRRDFxMQoJydHhYWFCg7+7ymtX79emzdv1lNPPaX4+HidPHlSd999t2e7w+G46DGHDh2q7t27e26HhYXJ5XL5fPbyUuwoP/zx59yXnE6noqKilJeXJ7fbbfc4pRYZGakTJ07YPUaplbd1kVibQHWl61LSb/LKRRDVrVtXsbGxevnll3Xfffd53kN06tQphYSEqFKlSjp79qxeffXVYl9XpUoV/fDDDxc8ZkJCghISEjy3c3Nzy8UfJOByrpY/5263+6qZ9VIsyyoX53FOeVkXibUJVP5al3Lxz+6dTqfGjx8vl8ulIUOGqH///lq+fLluu+02xcfH6/7779ewYcNUt27dYl/XuXNnHTp0SHfffbfGjRtn0/QAAMBuDsuyLLuHuBrk5ub65bhOp1MpKSl+OTbgjfT0dLtHuCSn06no6Gi5XK5y8d1upUqVlJ+fb/cYpVbe1kVibQLVla5LTExMifYrF1eIAAAASoMgAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEIIgAAYDyCCAAAGI8gAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEIIgAAYDyCCAAAGI8gAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEIIgAAYDyCCAAAGI8gAgAAxiOIAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYLtnsASEuWLJHL5ZLb7bZ7lFKrVKmS8vPz7R6j1JxOp6Kjo8vNukjlZ20AwB+4QgQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwHkEEAACMRxABAADjEUQAAMB4BBEAADAeQQQAAIxHEAEAAOMRRAAAwHgEEQAAMB5BBAAAjOewLMuyewiTZWdna+7cuRo6dKgSEhLsHgf/j3UJXKxNYGJdAhdrUzJcIbJZdna20tLSlJ2dbfco+AXWJXCxNoGJdQlcrE3JEEQAAMB4BBEAADAeQWSzhIQETZgwgdd1AwzrErhYm8DEugQu1qZkeFM1AAAwHleIAACA8QgiAABgvGC7BzDZ8ePH9cILL+izzz5TeHi4evXqpR49etg9ltFmzpyp9evXKzj4v0+NF154QbGxsTZOZaZ3331Xq1evVmZmplq1aqXHH3/csy0rK0uzZs1SZmam4uPjNWTIEDVr1szGac1yqbUZPHiwfvrpJwUF/fz9dmxsrF544QW7RjVKQUGBXnzxRe3atUv5+fmKiYlR37591b59e0k8by6HILLR3LlzVVBQoHnz5unw4cMaP368atSooZYtW9o9mtF69OihAQMG2D2G8apWraq+fftq586dys/P99xfWFiop59+Wl26dNHkyZO1ZcsWTZ48WS+++KKqVKli38AGudjanDN27Fj+P2YDt9utqlWr6plnnlF8fLz27t2rp556SvHx8UpKSuJ5cxm8ZGaT06dPa9OmTbrvvvsUERGhWrVqqUuXLvroo4/sHg0ICK1bt1ZycrKioqKK3b97926dOXNGffr0UUhIiNq1a6eaNWtq06ZNNk1qnoutDexVoUIF3XvvvbrmmmvkcDjUsGFDNWjQQHv37uV5UwJcIbLJwYMHZVmWrrvuOs99119/vTZv3mzjVJCklStXauXKlYqJiVG3bt3UuXNnu0fCL3z//feqVauW5yUZSapdu7aysrJsnAq/NHPmTFmWpZo1a6pfv35q2LCh3SMZ6fTp0/r222/VrVs3njclQBDZ5PTp04qIiCh2X2RkpE6dOmXTRJCkbt266YEHHlBkZKS++OILPffcc4qMjFTr1q3tHg3/79SpU4qMjCx2X2RkpA4fPmzTRPilUaNGqU6dOpKkVatWKS0tTbNmzVJcXJzNk5mlqKhIM2fOVN26ddW8eXN9/fXXPG8ug5fMbFKhQoXz4ufkyZMKDw+3aSJIUp06dRQVFSWn06mmTZvqzjvv5JJygAkPD9eJEyeK3XfixAmeOwGiYcOGCgsLU1hYmO644w7Vrl1b27dvt3sso1iWpTlz5ujo0aN6/PHH5XA4eN6UAEFkk+rVq0v6+fL/ORkZGapZs6ZdI+ECHA6H+OzSwFKzZk1lZWWpqKjIc19GRkaxl58ROIKCgngOlSHLsvTiiy8qIyNDEydO9AQPz5vLI4hsUqFCBbVp00aLFi3SyZMnlZWVpQ8//JD3q9hs48aNOnnypIqKivSf//xHK1asUHJyst1jGcntduvs2bMqKipSUVGRzp49q8LCQjVp0kShoaFatmyZCgoKtHHjRmVlZalNmzZ2j2yMi61NTk6OvvjiCxUUFKigoEArV67UN998o+bNm9s9sjHmzp2rr776SmlpacXelsHz5vL40R02On78uGbPnu35HKLevXvzOUQ2S01N9XwXde5N1bfffrvdYxlpyZIlWrp0abH7OnTooJEjRyozM1OzZ89WZmam4uLiNHToUD5PpQxdbG169+6t6dOnKzs7W8HBwbr22mvVr18/NWnSxKZJzXL48GENHjxYISEhcjqdnvv79Omjvn378ry5DIIIAAAYj5fMAACA8QgiAABgPIIIAAAYjyACAADGI4gAAIDxCCIAAGA8gggAABiPIAIAAMYjiAAAgPEIIgD4hVq1aumRRx4ps8ebP3++HA6HcnNzy+wxAZwv2O4BACCQvPXWW4qOjrZ7DABljCACgF/gJ7MDZuIlMwCXNHDgQDVu3Fhr165V8+bNFRkZqZtuuknbt2+XJGVmZsrhcOif//xnsa8bOXKkatWq5bl97qWhTz/9VF26dFFERITq16+vjz/+WEVFRXryyScVHx+v+Ph4jR07VkVFRSWeceHChWrbtq2qVq2q6Oho3Xrrrfrkk0+K7TNx4kRVrFhRu3fvVtu2bRUREaHGjRtr5cqVxfb735fMzp3/xx9/rKZNmyo8PFzt27dXZmamjh49qr59+yoqKkp16tTRa6+9VuxYK1asUOfOnRUXF6eoqCjdfPPN+uCDDy57PlOmTFFSUpIqVKig2NhYderUSRkZGSX+/QBw5QgiAJf1ww8/aPjw4Xr88cf1+uuv6/Tp0+rVq5cKCgqu+Fj9+/fXb3/7W7311ltKTExU7969NWLECO3fv18LFy5USkqKpkyZoqVLl5b4mJmZmerfv7/eeOMNLVmyRDVr1tQtt9yir7/+uth+BQUFuvfeezVw4EC99dZbiouL0+9+9zsdOXLksuc/evRojRs3TosXL9Z3332ne++9V3/4wx/UpEkTvfnmm2rZsqX69eunrKwsz9dlZGSoW7duWrRokd588021adNGd9xxh9auXXvRx1q4cKHGjx+vQYMG6YMPPtBLL72kX/3qV8rLyyvx7wcAL1gAcAkDBgywHA6HtWfPHs99a9assSRZGzZssDIyMixJ1htvvFHs60aMGGFdd911ntvz5s2zJFlz5szx3Ld7925LkpWcnFzsa1u2bGn17NnTq3ndbrdVUFBg1a9f3xo7dqzn/gkTJliSrBUrVnjuOzf7okWLPPddd911VkpKyiXPf9asWZYka8yYMZ77XC6X5XQ6rZkzZ15yri5dulh333235/5zvy85OTmWZVlWSkqK1aJFC6/OHYD3uEIE4LISExPVqFEjz+2GDRtKkg4cOHDFx+rcubPn1/Xq1ZMkdezYsdg+9erV0/79+0t8zL1796pXr16Kj4+X0+lUSEiIvvrqq/OuEAUFBalTp06e27Vq1VJ4ePhlz+N/z//c3L88VpUqVRQXF1ds7gMHDmjAgAGqXr26goODFRISog8//PC8uX6pRYsW2rFjh0aNGqWNGzd6dRUOwJUjiABcVpUqVYrdDg0NlSSdPn26VMc6d5wLHb+kx87Pz1eXLl2UlZWl559/Xhs2bNC2bdvUrFmz844RHh7uecwreayLnf+l5i4qKlL37t21ceNGPfXUU1qzZo22bdumrl27XvLxBg4cqBkzZmjlypVq166dYmNjNWLECJ06deqSMwIoHf6VGYBSqVChgiTp7Nmzxe53uVxl8vibN2/WgQMH9O6776pZs2ae+48dO6YaNWqUyQwX8u2332rHjh16++231aNHD8/9lwuboKAgjRgxQiNGjNDBgwe1dOlSpaamKiYmRuPHj/f32ICxuEIEoFTi4uIUEhKivXv3eu47e/as1q1bVyaPfy4wfnnl59///rcyMzPL5PEv5kJzZWVladOmTSU+RvXq1TV69Gg1bdq02O8vAN/jChGAUgkKClLv3r01e/ZsJSUlKSYmRrNnz5ZlWXI4HH5//OTkZFWsWFEpKSlKTU3VwYMHNWHCBFWvXt3vj30pN9xwg2rUqKHU1FS53W4dP368RHMNHTpU0dHRSk5OVnR0tDZt2qRdu3Zp2LBhZTQ5YCauEAEotVmzZunWW2/V8OHDNXToUN1+++3q1atXmTx2fHy83njjDR0+fFg9evTQzJkzNXfuXCUlJZXJ419MWFiYli1bprCwMP3+97/Xn/70J40bN07t27e/5Ne1bt1aGzdu1KBBg3T77bdr8eLFmjFjhgYNGlRGkwNmcliWZdk9BAAAgJ24QgQAAIzHe4gABLTCwsKLbnM4HHI6nWU4DYDyipfMAAS0S70x+7rrrrP9X5MBKB+4QgQgoG3btu2i28LCwspwEgDlGVeIAACA8XhTNQAAMB5BBAAAjEcQAQAA4xFEAADAeAQRAAAwHkEEAACMRxABAADj/R/rjGP72jSR3QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 148, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='species', y='num_animals')\n", " + geom_bar(stat='identity')\n", " + coord_flip()\n", ")" ] }, { "cell_type": "markdown", "id": "87b445f7", "metadata": {}, "source": [ "## Sorting your bars\n", "\n", "By defualt, `geom_bar` sorts based on alphabetical order. In order to sort your bars in plotnine, you need to use `reorder` when you're using `aes`." ] }, { "cell_type": "code", "execution_count": 152, "id": "8464e2e0", "metadata": {}, "outputs": [ { "data": { "image/png": "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AgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcAgwAALAcb7MLKI05c+boiy++kLf3/5U7b948RUREmFgVAAAwiyUCjCT16dNHQ4cONbsMAABQCTCFBAAALMcyIzCrV6/W6tWrFR4erptuukndu3c3uyQAAGASSwSYm266SXfeeacCAwO1c+dOPf300woMDFSHDh3c2qWlpSktLc217Ovrq+jo6Iout9qy2+1ufwOoeHz/oaKY3dcsEWAaNGjg+rpFixa64YYbtH79+mIBJjU1VdOmTXMtJyYmKikpqcLqxGnBwcFmlwBUW6GhoWaXgGrC7L5miQBzNpvNJsMwiq0fNWqUevfu7Vr29fVVZmZmRZZWrdntdgUHBysrK0tOp9PscoBqiZ95qCjl2ddKE44sEWDWrVun+Ph4+fn5affu3froo480cuTIYu2ioqIUFRXlWs7IyOAXqQmcTifvO2ASvvdQUczua5YIMB9++KHmzZunwsJChYeHa/DgwerSpYvZZQEAAJNYIsAkJyebXQIAAKhEeA4MAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHAIMAACwHG+zCyhPDodDvr6+ZpdRbdhsNklSYGCgDMMwuRqgegoKCjK7BFQTZve1Kh1g8vLylJeXZ3YZ1YbdbpfD4VBOTo6cTqfZ5QDVUnZ2ttkloJooz75WmsEHppAAAIDlEGAAAIDlEGAAAIDlEGAAAIDlEGAAAIDlVOm7kMrT6NGjzS4BFjJ37lyzSwCAKoURGAAAYDkE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5PofamBgoEJCQnTbbbfp6NGjbq8/duyY7rzzToWHh8vf318dOnTQF1984dbmmmuu0Y033qhFixbp8ssvl6+vr7Zt2yZJevnllxUXF6eAgAB169ZNP//8c4l1Lly4UC1atJCfn5/q1KmjiRMnug2tF03BbNiwQd27d1dgYKAeeeQRSdLixYt16aWX6qqrrnLbZ3Jysi677DL5+fkpIiJC1113nfbt2yfp/6YYFi1apLvuukshISEKCwvTuHHjVFBQ4Lafw4cPa/Dgwa73oEuXLtq8eXOxc1i8eLGuuuoq+fn5KTw8XL169dKBAwfc6j9zCik3N1eJiYmKjY2Vr6+vGjdurCVLlrjtc+fOnerVq5dq1aqlgIAAXX755frf//3fEt/D84mLi9MDDzygefPmKTY2ViEhIerbt6/blNu5prmuvPJKDRs2zLVc1Kf+85//qEWLFvL391dCQoL279+vY8eOaeDAgQoODlaDBg309ttvX1CdEyZMUPPmzVWjRg3VqVNHt956q9LS0tzaFPW3d999V5dffrlq1Kihrl276pdffnG1KWkKqeg9mDNnjurVq6egoCANGzZMubm52rp1qzp27KjAwEC1bdtW27dvdzvmrFmz1KZNG4WEhCgyMlI33nij9uzZc95zOX78uO6++27VqVNHfn5+qlevngYNGuTWZsCAAdq6davr+wUoK/xXCVXCr7/+qtGjR2vSpEmKiYlRTEyMNmzYoGuuuUa9evXS22+/rZycHE2aNEl9+vTRhg0bJJ0eSenZs6f27t2rp59+WrVr19bcuXPVvXt3ffXVV2rVqpXrGN9++63279+vJ554QqGhoapXr54+/PBDjRw5UsOGDdOgQYO0efNmDRgwoFh9zz77rB599FGNHTtWs2bN0q5du1wBJjk52a3tbbfdppEjRyoxMVEBAQGSpP/85z/q0KGDW7vFixdr8uTJeuKJJ9S+fXv9+eef+vLLL5WVleXWLjExUT169NA777yjLVu26PHHH5fD4XAdNzMzU506dVKNGjWUkpKikJAQpaSkqGvXrvrpp58UGRkpSZo5c6YeffRR3XXXXUpKSlJ+fr7Wrl2r9PR0xcbGlvjvMnDgQK1bt05TpkxR48aN9fHHH2vw4MEKDQ1Vz549JUk33XSTateurVdffVUhISH6+eefdfjw4VL/25/pgw8+0E8//aR58+YpIyNDY8eO1T//+U8tXbr0gvf122+/6aGHHtLEiRPl4+Oj0aNH6/bbb1dAQIC6dOmiu+++Wy+//LIGDx6sdu3anfM9ONvRo0eVmJio6Ohopaena9asWUpISNAPP/zgNnq1detWzZw5U8nJyXI6nRo3bpwGDx7s6rvn8v7776tZs2ZKTU3V3r17NW7cODkcDm3YsEHjxo1T7dq1NX78eA0YMEA//PCDvLxO/z/28OHDeuCBBxQbG6usrCzNnz9fHTp00J49e845yjNu3DitWrVKycnJiouLU1pamlatWuXWpnHjxgoNDdUnn3yili1bluo9AkrFACxu6NChhiRj48aNbuu7dOlidOjQwSgsLHSt27lzp2Gz2YyPPvrIMAzDeP/99w1Jxr///W9Xm7y8PCMmJsbo16+fa11CQoLh4+NjHDx40O0YV199tdG5c2e3dZMnTzYkGQsWLDAMwzCysrKMGjVqGI899phbuxdffNHw9/c3MjIyDMMwjAULFhiSjOTkZLd2hYWFhq+vrzFz5ky39ffff78RHx9/zvdl3759hqQS6wsICDCOHTtmGIZhPP7440ZISIjx+++/u9qcOnXKiImJMR555BHDMAzj+PHjRkBAgDFy5MhzHq+o/vT0dMMwDGPt2rWGJGP16tVu7W655RajTZs2hmEYRnp6uiHJ+OCDD86539KKjY016tata5w6dcq1bsqUKYaPj4/hdDpLrLFIy5YtjaFDh7qWhw4dathsNmPHjh2udSkpKYYkY/z48a51mZmZht1uN+bMmeNRzQUFBcbhw4eLvU8JCQlGYGCgcfToUde6otoPHTpkGMb//fsuW7as2HuQm5vrWvePf/zDkGSsWrXKtW7lypWGJGPr1q3nrOvEiRNGjRo1jNTUVNf6oUOHGk2bNnUtN23a1Bg3btzfnmdCQoLRv3//v20HXAimkFAl1KpVS1dffbVr+cSJE1q/fr0GDBggp9OpgoICFRQUqFGjRqpXr542bdokSfryyy8VHBzs9kmyPj4+6tevn9atW+d2jBYtWqhevXquZafTqc2bN+vmm292a9e/f3+35a+++kp//fWXBgwY4KqjoKBA1113nU6ePKkdO3a4tb/hhhvcljMzM5Wbm1vs4t34+Hh99913GjdunNatW3fOa3JKqu/EiROuKYQ1a9bo2muvVVhYmKs2u92uhIQE1/u0YcMGnThxQnfddVeJxyjJmjVrFBYWpq5du7qdd/fu3fXdd9/J6XSqVq1aio2N1WOPPaZFixZ5PPJSJCEhQb6+vq7lJk2aKD8/v9i0YWlER0eradOmruVGjRpJkq677jrXupo1ayoyMlKHDh0q9X5XrVqlDh06KCQkRN7e3qpbt64kFZuuufLKK93+zZs0aSJJf/seJSQkyOFwuNXt5eXldrFv0bmcWffGjRvVvXt31apVS97e3goICNBff/113mmk+Ph4LVy4UM8880yxfnym8PDwYtNkwMUiwKBKqF27tttyZmamnE6nxo4dKx8fH7c/Bw8edP3gzszMdE2RnL2/Y8eOnfcY6enpKigoKPb6s9sVXW8RHx/vVkfDhg0lqdgvv7Nff+rUKUly+8Usnb5OY/bs2Vq9erU6d+6siIgIjRkzxnXhb5Fz1Vf0CyUjI0P/+te/ir1Pr7/+uqu2P/74Q9LpX+qllZGRoWPHjhXb74gRI1RQUKC0tDTZbDatWbNGjRs31v3336969eqpdevWxa5BKq2z74Aq+kVe9B6Wxb5KWl/a/W/atEm9e/dWdHS0Xn/9dW3YsEEbN24ssUZPz6Wk1/n7+7uFmrP3dfDgQfXo0UNOp1Opqalav369Nm3apMjIyPMeLyUlRXfccYdmzZql5s2bKyYmRi+++GKxdr6+vsX6JXCxuAYGVYLNZnNbrlmzpmw2mxITE9W3b99i7cPDwyVJYWFhJf7v/Pfffy8273/2MSIiIuTt7V3s9b///rvbctF+li9f7jaCU6R+/frnPU7R648fP+623svLS2PGjNGYMWN05MgRLV26VBMmTFB4eLgmT57saneu+qKiolz7v/766zV9+vRitRWFplq1akk6fa1R0YjB3wkLC1NERIQ+/vjjErcXBatGjRpp2bJlys/P11dffaXExETddNNNOnLkiGrUqFGqY5WWn5+fJCkvL89tfWZmZpke51xWrFihkJAQvfPOO65rT4ougjbTv//9b/31119avny5KwAVFBQUC/FnCwkJ0Zw5czRnzhxt375dzz33nO677z41a9ZMnTt3drU7fvy4qw8BZYURGFRJgYGBat++vXbt2qXWrVsX+xMXFydJ6tSpk7KysrRmzRrXawsKCrRixQp16tTpvMew2+2Kj4/XihUr3Naf/WCx9u3bKyAgQIcPHy6xlr/7we7n56eYmBjX3UUlqVOnjh566CG1aNFCu3btcttWUn0BAQFq3ry5pNNTIj/88IMaN25crLaiNkXnsGDBgvPWeqbrrrtO6enpcjgcJZ73mSMC0umpu4SEBE2YMEFZWVn69ddfS32s0ioKX2e+R7t27bqgKaCLcfLkSfn4+LiF1DfffLNCjn0+J0+elM1mk4+Pj2vdO++8U+xutfNp3ry5Zs+eLUnF+uD+/ft1+eWXl02xwP/HCAyqrJkzZ6pr16665ZZbNGjQIIWGhurw4cP65JNPNHz4cF1zzTW64YYb1LZtWw0ePFjJycmqXbu2UlJSlJaWpsTExL89xsSJE9WnTx8NHz7cdRfS66+/7tamZs2aeuKJJ/Too4/q8OHDuuaaa2S327V37169//77eu+991x3G51Lx44di93WPGrUKIWGhqpdu3YKDQ3V+vXrtW3bNt13331u7X755RdXfVu2bNGMGTM0duxYhYaGSjp9J8mbb76phIQEjRkzRjExMUpPT9fXX3+t6OhojR07ViEhIZoyZYrGjx+vwsJC9enTR4WFhfr000916623qnXr1sVq7t69u2666SZdf/31evTRR9WiRQvl5ORo586d+vnnn/XKK6/o+++/10MPPaRbbrlFDRo00J9//qkZM2YoLi5ODRo0kCR99tlnuvbaa7VgwQK3W509cfXVV6tevXoaO3asZsyYoaysLCUnJ1fY6ED37t01Z84c/fOf/9TNN9+sDRs2FOsvZii6Pmb48OEaNWqUdu7cqVmzZv3tQwk7duyom2++Wc2aNZPdbtfixYvlcDjcRl9ycnK0e/duTZkypTxPAdUQAQZVVocOHVy38A4fPlx5eXmqW7euunXrpssuu0zS6VGUjz/+WA8//LAeeeQR5eTkKD4+XmvWrHG7hfpcevfurfnz5yspKUlLly7V1VdfrbffftvtgmJJeuihh1SnTh09++yzSklJkY+Pjxo0aKAbb7yx2EhESfr376/bb79d2dnZCgoKcp3fyy+/rJdfflknTpzQpZdeqtmzZxe70DYpKUmfffaZBgwYILvdrvvvv19JSUmu7bVq1dLGjRs1adIkjR8/Xn/88YciIyPVrl07twuAH330UUVERGj27NlauHChgoKC1L59+xKvISry7rvvKjk5WS+88IIOHDigkJAQNWvWTMOHD5ckXXLJJbrkkks0Y8YMHTlyRCEhIercubPeeOMN2e12Sad/ARa1vVg+Pj5asWKF7r33Xg0YMECXXXaZZs+erYceeuii910avXr10tNPP62UlBQtWLBAHTt21Icffui6qNYszZs318KFCzV16lTdeOONuvLKK/Xuu++W+EiAM3Xs2FGLFy/Wvn375OXlpebNm2vlypVq3Lixq83q1avl7+/vum0eKCs2wzAMs4sAcH75+fmKiYnR008/rSFDhpTqNfv371f9+vW1bNmyYndGWcnkyZO1YsUKbd++vdj1Qaj8BgwYoKCgIL322mtml4IqhmtgAAvw8fHRhAkT9Nxzz5ldSoVbv369EhMTCS8WtG/fPn300UeaOHGi2aWgCmIKCbCIe+65R1lZWcrIyHDdRVUdrF271uwSSsUwjPN+6rKXl5frzqPq4siRI3rppZdc1zMBZYkpJAAoA0UXG5/L0KFDtXDhwoorCKjiCDAAUAays7P1448/nnN7eHi46/Z9ABePAAMAACynek3IAgCAKoEAAwAALIcAAwAALIcAAwAALIcAAwAALIcAAwAALIcAAwAALOf/ARze27/5kJgQAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 152, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='reorder(species, num_animals)', y='num_animals')\n", " + geom_bar(stat='identity')\n", ")" ] }, { "cell_type": "markdown", "id": "36a4f35e", "metadata": {}, "source": [ "`x='reorder(species, num_animals)'` means \"I want you to use `species` for the x axis, but I really want you to order it based on the `num_animals` column.\"" ] }, { "cell_type": "markdown", "id": "85b989f1", "metadata": {}, "source": [ "### Reversing your bar order\n", "\n", "Instead of sorting with `num_animals`, you're going to sort with `-num_animals`, which I guess it's the ... subtracted negative version?" ] }, { "cell_type": "code", "execution_count": 155, "id": "0611dcb3", "metadata": {}, "outputs": [ { "data": { "image/png": "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H35QeHi4WrdurfXr1+vll1/21luBIf7880+9+uqr+uGHH5STk6P69etr7Nixmj59unbu3KkzZ84oNjZWDz74oGJjY7Vu3Tp99tlnstlsWrt2rWrWrKlp06Z5+23AywYOHKhOnTpp06ZNOnDggB5++GGtXLlSqampCg4O1u23364uXbq4vWblypVatWqVypYtqzvuuENdu3Z1LcvOztZzzz2nr7/+WmFhYXrooYdUv359SVJCQoJatGihunXrav78+XI4HOrZs6ckaenSpSpXrlzxvfErAAUGF5WTk6PExER16NBB3bt3144dO5SYmKjmzZvrt99+09SpUzVq1CjFx8frs88+06RJk7RgwQIFBwdr4cKFkqRFixbpxIkTmjJlipffDUzgcDj01FNPKS4uTgsWLJCvr6927dolSbrhhhs0ZMgQ+fj4aOnSpZoxY4bmzp2rzp07a/fu3apYsaL69u3r5XeAkuSTTz7RuHHjFBYWpm3btmns2LGKjIzU//3f/2nChAmKi4tTnTp1JEnp6en6448/9Morr+jAgQN68sknFRMTo+uuu06S9PXXX2vYsGEaPny4Pv30UyUmJuqll15S+fLlXfuLjY3Vww8/rPXr12vGjBleec9XAi4h4aJ27dqlM2fOqEePHipbtqxuuOEGxcfHS5K++OILxcfH68Ybb5TdblebNm1UtWpVffnll3I4HNq8ebPuuece+fv7q0qVKurUqZOX3w1M8Msvv+iPP/7QwIEDFRAQoLJly7p+y23Xrp0CAgLk4+OjXr166cCBA0pPT/dyYpRkXbp0UZUqVVS2bFnddNNNioqKks1m0zXXXKP4+Hjt3LnTta5lWerTp498fX1Vu3ZttWnTRp9//rlreY0aNXTLLbfIbrerbdu2ioiI0NatW73xtq54nIHBRR07dkyhoaEqU+Z/fTc8PFyZmZn6888/FRER4bZ+5cqVdezYMaWnpysnJ0dhYWGuZWf/DJxPamqqwsPD5ePj4zbf4XDo9ddf1+bNm3XixAnXmExPT1dwcLA3osIAZ/8btW3bNr3xxhv67bffZFmWzpw5o6pVq7qWBwQEKDAw0DUdHh6u7777zm363G0fO3asCNPjfDgDg4sKDQ3VsWPH5HQ6XfOOHj0qSapUqZKOHDnitv4ff/yh0NBQBQcHq2zZskpNTXUtO/tn4HzCwsJ09OhR5eTkuM3//PPPtWXLFk2ePFnLly/Pcy+VzWYrzpgwTHZ2tqZOnaquXbtq6dKleuONN9SoUSO3dU6ePKmTJ0+6plNTU93u+cv9t+/s6dDQ0KINjnxRYHBRV199tXx9fbVy5Url5OTo+++/17fffitJat68ub799ltt27ZNDodDn3zyiQ4fPqwmTZrIbreradOmWrZsmU6dOqUjR45o/fr1Xn43MEGdOnUUHh6uV155RSdPnlROTo527typU6dOycfHR0FBQcrKytLrr7/u9roKFSro999/91JqlHTZ2dnKyclRSEiI7Ha7vvvuO7ezK9LfJXjp0qXKzs7Wnj17tHHjRrVs2dK1PDk5WZ999pnr37vff/89TwmS/h6Lx44dU3Z2dpG/rysVl5BwUWXLltXYsWM1d+5cvfXWW6pfv75uueUWZWdnq2rVqho1apQWL16so0ePKioqSuPHj3edzh88eLDmzJmj/v37Kzw8XC1bttSnn37q3TeEEs9ut2v8+PF6+eWXNWjQIDmdTl177bUaPny4vv32W/Xv319BQUG655573F7Xvn17PfPMM7r77rtVs2ZNJSYmeukdoCQKCAjQAw88oBkzZignJ0c33nijGjdu7LZOcHCwIiIidP/998tut6tnz56uG3glqXHjxvrmm280f/58hYWFacyYMQoKCsqzrwYNGqhGjRrq27evLMvSokWL+BRSIeO7kFCs3nvvPX3zzTd8GgkAcFm4hIQidejQIe3Zs0eWZWnfvn1avXq1mjZt6u1YAADDcQkJRerMmTOaPn2666FRrVq10j/+8Q9vxwIAGI5LSAAAwDhcQgIAAMahwAAAAONQYAAAgHEoMAAAwDgUGAAAYBwKDAAAMA4FBigkx48fl81m0+LFiwt1uzt27FBQUFCeL5ErKRYvXiybzcYXdXpZv379VL9+/WLb3759+2Sz2fT2228XaH2n06mrrrpK//73v4s4Ga4UFBighBs3bpz69eun8PBwb0fJV5cuXbRlyxZVqFDB21GuaOPHj9eyZcu8HeO8ypQpo9GjR2vChAl5vmUc8AQFBqWGZVk6c+ZMke7D4XAUy7fLnjp1SpK0d+9erV69Wvfff3+R79NT4eHhatKkicqW5cHe3lSrVi01aNDA2zEu6K677tLvv/+uNWvWeDsKSgEKDIyVe8p83bp1uu666+Tn56fVq1dLkrZs2aI2bdooMDBQISEh6t27t44cOeL2+mPHjun+++9XWFiY/P391axZM33++edu67Ru3Vq33nqrlixZoquuukp+fn7avn27JOmll15SbGysAgIC1LZtW/3666/55ly8eLEaNGigcuXKqWrVqho7dqwcDofbcpvNpi1btqh9+/YKDAzU448/LklaunSpatasqRtuuMFtm9OmTVPt2rVVrlw5hYeHq127dkpOTpb0v1P7S5Ys0YABAxQSEqLQ0FA9+uijeX7zPXTokO69917XMWjZsqW2bduW5z0sXbpUN9xwg8qVK6ewsDB17txZ+/fvd8t/9iWkM2fOKCEhQTExMfLz81PdunXznB348ccf1blzZ1WqVEkBAQG66qqr9Oyzz+Z7DC9VbqbvvvtOnTp1UmBgoOrUqaOlS5e6rRcbG6tHHnnEbd67774rm82mffv2Sfrf8Xzttdf04IMPqkKFCoqIiNDMmTMlScuXL9dVV12l4OBgde/eXcePHy9wzi1btqhr166KiopSYGCgrr/+er322mtu63z66aey2Wz66KOP1Lt3bwUFBSkmJibPsTr3ElLuMfjmm2/UoUMH1zH+z3/+I6fTqXHjxqly5cqqXLmyxowZI6fT6Xrtrl271KtXL1WvXl0BAQGqV6+ennvuObd18vP++++rUaNGKl++vCpUqKBGjRpp3bp1ruUBAQHq0qWLlixZUuBjBJwPBQZG++233zR06FCNGDFCH3zwga6//npt2bJFrVu3VkhIiN58800tXLhQW7duVbdu3Vyvczgc6tSpk1avXq1nnnlGK1asUPny5dW+ffs8/4F/8803mj59uiZPnqx169apevXqWrNmjQYNGqRbbrlFq1atUtu2bXXnnXfmyTdz5kwNHDhQ//jHP7R69WqNGjVKc+bM0dixY/Os27t3b7Vp00Zr1qzRfffdJ0n6z3/+o2bNmrmtt3TpUo0fP14DBgzQBx98oJdfflnXX3+90tPT3dZLSEiQ0+nUW2+9pccff1xJSUkaN26ca3laWpqaN2+u77//XklJSXrnnXcUGBioNm3auJW96dOnq2/fvmrYsKFWrlypV155RXXq1LngPTk9e/bUggULNHLkSK1Zs0YdO3bUvffeq/Xr17vWue2225SWlqZXXnlFa9eu1WOPPabMzMzzbtMT99xzjzp06KB3331XN9xwg/r166effvrJo22NHTtW/v7+WrFihe68806NHDlSY8aM0fPPP69nn31W8+bN08aNG/XEE08UeJv79+/XzTffrJdfflmrV6/WP//5Tw0YMCDf/+AffPBBxcXFadWqVbrttts0atQoffDBBxfdR58+fXTrrbdq1apVioqKUvfu3TVs2DAdPHhQS5cu1ZAhQzRt2jQtX77c9ZrDhw/rqquu0vz587Vu3ToNGjRIkydPvuC3yO/Zs0c9evTQNddco1WrVunNN99Uz549lZaW5rZes2bNtHHjxouWIeCiLMBQffv2tSRZX375pdv8li1bWs2aNbOcTqdr3o8//mjZbDZr7dq1lmVZ1nvvvWdJsj744APXOllZWVZ0dLTVvXt317xWrVpZPj4+1oEDB9z2cdNNN1ktWrRwmzd+/HhLkrVo0SLLsiwrPT3dKl++vDVmzBi39V544QXL39/fSk1NtSzLshYtWmRJsqZNm+a2ntPptPz8/Kzp06e7zR8yZIgVHx9/3uOSnJxsSco3X0BAgHXs2DHLsizrySeftEJCQqw//vjDtc7p06et6Oho6/HHH7csy7KOHz9uBQQEWIMGDTrv/nLzHz161LIsy9q4caMlyfrwww/d1rvrrrusG2+80bIsyzp69KglyXr//ffPu93LkZtp3rx5rnl//fWXFRAQYE2ZMsU1LyYmxhoyZIjba1etWmVJspKTky3L+t/x7Nmzp2udnJwcq3LlylZgYKDr79GyLGvkyJFWhQoVPMrsdDqt7Oxsa9CgQVbTpk1d8z/55BNLkuvvJHfd2NhYa8CAAa55ffv2ta655po8x2D+/PmueTt27LAkWU2aNHHbd8OGDa3bb7/9grkSExOtyMhI1/zc47JixQrLsixrxYoVliQrPT39gu8z9/3s3LnzgusBF8MZGBitUqVKuummm1zTJ0+e1ObNm3XnnXfK4XAoJydHOTk5iouLU/Xq1bV161ZJ0hdffKHg4GC3b8b28fFR9+7dtWnTJrd9NGjQQNWrV3dNOxwObdu2TXfccYfbej169HCb/u9//6u//vpLd955pytHTk6O2rVrp1OnTmnnzp1u63fp0sVtOi0tTWfOnMlz8258fLy+++47Pfroo9q0adN578nJL9/Jkye1Y8cOSdKGDRt0yy23KDQ01JXNbrerVatWruO0ZcsWnTx5UgMGDMh3H/nZsGGD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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 155, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='reorder(species, -num_animals)', y='num_animals')\n", " + geom_bar(stat='identity')\n", ")" ] }, { "cell_type": "markdown", "id": "312165a3", "metadata": {}, "source": [ "## Stacked bar graph\n", "\n", "To make a stacked bar graph, you use one of your columns to specify `fill`, which is the color of the bar. All of the filled bars get stacked next to each other." ] }, { "cell_type": "code", "execution_count": 173, "id": "9bf4b9c5", "metadata": {}, "outputs": [ { "data": { "text/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", "
speciesnum_animalscounty
0cat8Kings
1dog22Kings
2cat3Queens
3dog2Queens
\n", "
" ], "text/plain": [ " species num_animals county\n", "0 cat 8 Kings\n", "1 dog 22 Kings\n", "2 cat 3 Queens\n", "3 dog 2 Queens" ] }, "execution_count": 173, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame([\n", " { 'species': 'cat', 'num_animals': 8, 'county': 'Kings' },\n", " { 'species': 'dog', 'num_animals': 22, 'county': 'Kings' },\n", " { 'species': 'cat', 'num_animals': 3, 'county': 'Queens' },\n", " { 'species': 'dog', 'num_animals': 2, 'county': 'Queens' },\n", "])\n", "df" ] }, { "cell_type": "code", "execution_count": 174, "id": "6f4de0d6", "metadata": {}, "outputs": [ { "data": { "image/png": "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xaKaNWuqYcOGFFIAAFDsbNq0Se3atVNQUJACAwN111136YsvvpAknTlzRn379lVoaKj8/PzUvHlzffvtt7keX7VqVQ0enPsOcp988oksFosOHz4sSTp8+LAsFosWL16swYMHKzg4WBERERoxYoSys7MlSePHj1dcXJwyMzNlsVhksVjUunVr7dy5UxaLxZXpNw6HQxUrVtTIkSML6CdTOG7o4vlHjx7VJ598oqNHj+a5eL7FYtHMmTNvKBwAAEBh2LBhg2JiYtSsWTO9/fbbKleunH788UclJyfL4XCoffv2OnTokKZOnarw8HC98cYbatu2rTZu3KimTZte9/ONGTNGXbp00QcffKCNGzdq/PjxqlGjhp555hn169dPx44d05IlS7R27VpJUlBQkOrWrau77rpL8+fPV9u2bV1jff755zpx4oT69u3rsZ+HCW6X0g8++EBPPPGEcnJyVL58+TxnRymlAACguBg5cqRq1KihtWvXymq1SpLatWsnSVq+fLl++OEHff7557r//vslSffff79q1KihyZMn6+OPP77u57vrrrv0xhtvSJLatm2rr7/+Wh999JGeeeYZVapUSZUqVZKXl5eaNWuW63H9+/fX4MGDlZaWpuDgYEnS/Pnz1bx5c9WuXdvt118UuD19Hxsbq65du8put+v48eNKSkrK9XXo0CFP5gQAACgQFy5c0ObNm9W7d29XIf297777TkFBQa5CKkne3t7q1q2b1q9f79Zz/lZ4f1O3bl0dO3bsbx/Xs2dPeXt7a8mSJZIku92uFStW6KmnnnIrR1Hidik9deqUnn76aZUtW9aTeQAAAApVWlqacnJyFBkZ+afby5cvn2d9eHi4zpw549ZzlitXLteyzWbL81bIawkICNBjjz2md955R5K0ePFi+fj4qEePHm7lKErcLqUPPPCANm/e7MksAAAAha5cuXLy8vLSiRMnrrk9JCREqampedafPHlSISEhrmVfX19lZWXl2ictLc2zYXV1Cv/nn3/W9u3b9e6776pHjx666aabPP48hc3tUpqYmKhvvvlGY8aM0dq1a7V169Y8XwAAAEVdQECAoqOjtWjRIjkcjjzbW7RoofT0dK1Zs8a1Ljs7W//5z3/UokUL17pKlSppz549uR77+8dcD5vNpsuXL19z2+23367bbrtNzz//vHbs2FHsP+D0G7c/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8ssvNWjQIElSdHS0/P39dezYMT300EN/On6bNm302muvKTk5WVFRUX+bJyAgQNHR0dqzZ48mTZqUr9dQsWJFvfDCC1qyZIn27NmTr8cAAAoOpRRAvuzYsUMvvPCCHn30UVWvXl3nzp3TlClTVLVqVVWvXl3S1TOhTz31lOLi4lSuXDklJCTI6XRq6NChkq6e0ZwwYYJGjhypY8eOqXXr1rJarTp06JD++9//6uOPP5a/v7+GDRumRYsWqWXLlho3bpyqVaumQ4cOad++fZo6deo187366quKiYnRo48+qp49eyo4OFjHjh3TF198oX/+859q3bq1BgwYoODgYDVr1kzBwcHasGGDtm/froEDBxbWjxEA8CcopQDypUKFCqpQoYKmTJmi48ePq2zZsrrnnnu0ePFiWa1WSVJERISmTp2qF198UQcPHlS9evW0evVqhYeHu8Z54YUXVLFiRU2bNk2zZs2St7e3qlevrgcffFA2m03S1en7DRs2aPTo0Ro5cqQuXLigqlWr/mV5bN68udavX69XXnlF//znP5WVlaVKlSrpvvvuU40aNVz7/Otf/9K//vUvXbhwQdWqVdP06dP11FNPFeBPDgCQH9zRCYBH9OnTRz/++KPrE/QAAFwPPn0PAAAA4yilAAAAMI7pewAAABjHmVIAAAAYRykFAACAcZRSAAAAGEcpBQAAgHGUUgAAABhHKQUAAIBxlFIAAAAYRykFAACAcZRSAAAAGPf/ASN0ZSOaIvwPAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 174, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='species', y='num_animals', fill='county')\n", " + geom_bar(stat='identity')\n", ")" ] }, { "cell_type": "markdown", "id": "fbe63fd9", "metadata": {}, "source": [ "## Grouped bar graph\n", "\n", "To make a grouped bar graph, you'll specify a `fill` color in the aesthetics, then use `position='dodge'` along with your `geom_bar`." ] }, { "cell_type": "code", "execution_count": 170, "id": "1352a411", "metadata": {}, "outputs": [ { "data": { "text/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", "
speciesnum_animalscounty
0cat8Kings
1dog22Kings
2cat3Queens
3dog2Queens
\n", "
" ], "text/plain": [ " species num_animals county\n", "0 cat 8 Kings\n", "1 dog 22 Kings\n", "2 cat 3 Queens\n", "3 dog 2 Queens" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame([\n", " { 'species': 'cat', 'num_animals': 8, 'county': 'Kings' },\n", " { 'species': 'dog', 'num_animals': 22, 'county': 'Kings' },\n", " { 'species': 'cat', 'num_animals': 3, 'county': 'Queens' },\n", " { 'species': 'dog', 'num_animals': 2, 'county': 'Queens' },\n", "])\n", "df" ] }, { "cell_type": "code", "execution_count": 171, "id": "530a8ee6", "metadata": {}, "outputs": [ { "data": { "image/png": "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q08++aTA+vz8fH388ce64447dNVVV+n06dOubefPn9exY8dcy5GRkVq6dKmOHz/u+jpz5oxiYmIUGRmpmJiYAttOnjypFStWXFK+9u3b6/PPP9fRo0fVuXNn9ezZ0zMnfoncLqX9+vXTokWLPJkFAACg3AoMDNQrr7yip556SsuXL1dubq4OHz6s3r176/jx43rqqafUrFkz7dq1Sz/88INyc3P10ksvKT8/33WMJ598UqNHj9a+ffskSVlZWfrwww8lSXfffbdSU1P1zjvv6Ny5c8rLy9O2bdu0adOmf8x25MgRffrppzp16pS8vb1VuXLlEv9wC7en78eNG6ehQ4fqtttuU7t27Qq98chisejZZ5+90nwAAADlxnPPPaeQkBCNHj1a999/v86ePasbb7xR33zzjcLCwhQWFqbx48erc+fOqlSpkl588UWFhIS4Hv/UU0/Jy8tLd999tw4dOqSqVauqQ4cO6tmzp6666ip98cUXGj58uEaNGqXz58+rQYMGGj9+/D/mys/P19SpU9WnTx85nU41aNCgxAcfLU43byD61VdfqXv37jp58mTRB7ZYjN97zm63G31+lE5Wq1VBQUHKysoy/juKknF8+BDTEVCEevMWcx2iSH8uYcWt1/a9xXLcxY3rXdJ+S5cuVd++fbVmzRo1bdq0WLKUFW5P3w8ePFg33XSTtm3bpnPnzrnuL3rhiz8yAAAAf69r1656++23tWHDBtNRjHN7+v7gwYOaPn26GjVq5Mk8AAAAFco999xjOkKp4PZIaatWrfTrr796MgsAAAAqKLdHSidMmKDevXvLZrOpffv2RX7CUknfdBUAAABlk9ul9Oabb5YkPfHEE7JYLEXuw+tKAQAAcCmu6BOdLlZGAQAAgMvhdint06ePB2MAAACUvEu9dROK3xV9zCgAAADgCW6PlF5zzTX/OH2/f/9+dw8PAACACsTtUtqtW7dCpTQrK0vffPONnE6nunfvfsXhAAAAUDG4XUqnTp1a5Prc3Fzdc889uuaaa9w9NAAAACoYj7+m1GazaciQIXr11Vc9fWgAAACUU8XyRie73a6TJ08Wx6EBAABQDrk9fb9kyZJC63Jzc7Vz507NmDFDsbGxVxQMAAAAFYfbpbRHjx5Frvf29lb37t01ffp0t0MBAACgYnG7lKakpBRa5+vrq2rVqvFJTwAAALgs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F81Tu3Zt5+DBg13Lbdq0ccbExDjz8/Nd63bs2OG0WCzOzz77zOl0Op2DBw92Nm/e/PJOHABQIpi+B3BJrr76atWuXVujRo3S/PnzC4yQXlClShXFxsYWWG7fvr2+//57SdL69et16tQp3X///crLy3N9tW/fXmfOnNH27dslSV999ZViY2MVFRV1SdlOnz6t5ORk3X///XI4HK7j1q9fX7Vq1dKmTZskSc2bN9fPP/+s5557TuvWrdP58+ev8KcCAPAUSimAS2KxWLR69Wpdf/31Gjx4sGrVqqWbbrpJ3377rWuf0NDQQo8LCwtTRkaGJMlut0v6oxx6e3u7vq699lpJ0sGDByX9MX0fERFxydmysrLkcDj07LPPFjiut7e30tLSXMft06ePpkyZolWrVql169YKDQ3V0KFDdebMGfd+KAAAj+E1pQAuWf369fXRRx/p/PnzWr9+veLj49WlSxcdOnRIknT06NFCjzly5IjCw8MlScHBwZKkJUuWqFatWoX2veaaayT9MSp7+PDhS85VtWpVWSwWxcfH65577im0PSQkRJLk5eWloUOHaujQoTp06JAWL16skSNHKiQkRC+++OIlPx8AwPMopQAum7e3t26//XaNHDlSXbt2dRXIEydOaM2aNa4p/BMnTujLL7/U4MGDJUnR0dHy9/dXenq67r333osev3379po8ebLS0tIUGRn5j3kCAgIUHR2tnTt3avz48Zd0DjVq1NCwYcO0aNEi7dy585IeAwAoPpRSAJdk69atGjZsmB544AHVrVtXJ06c0MSJExUVFaW6detK+mMk9PHHH1dCQoKqVq2qpKQkOZ1OPfPMM5L+GNF85ZVXNGLECKWnp6tt27ayWq3av3+//vvf/+qTTz6Rv7+/nn32WS1YsEBt2rTRiy++qDp16mj//v3avXu3Jk2aVGS+V199VbGxsXrggQfUq1cvBQUFKT09XV988YX+9a9/qW3btho4cKCCgoLUsmVLBQUFKTk5WVu2bNGgQYNK6scIALgISimAS1K9enVVr15dEydO1KFDh1SlShW1bt1aCxculNVqlSSFh4dr0qRJev7557Vv3z41atRIq1atUlhYmOs4w4YNU40aNfT6669r+vTp8vb2Vt26dXX33XfLZrNJ+mP6Pjk5WaNGjdKIESN0+vRpRUVF/W15jImJ0bp16/Tyyy/rX//6l3Jzc1WzZk21a9dO9erVc+3z73//W//+9791+vRp1alTR1OmTNHjjz9ejD85AMCl4BOdAHhEnz599OOPP7reQQ8AwOXg3fcAAAAwjlIKAAAA45i+BwAAgHGMlAIAAMA4SikAAACMo5QCAADAOEopAAAAjKOUAgAAwDhKKQAAAIyjlAIAAMA4SikAAACM+/8AXI8LyegYYoYAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='species', y='num_animals', fill='county')\n", " + geom_bar(stat='identity', position='dodge')\n", ")" ] }, { "cell_type": "markdown", "id": "1b2f6aa7", "metadata": {}, "source": [ "### Extra spacing\n", "\n", "You can also use `position='dodge2'`, which adds a little extra space. I think it does something else, too, but nothing I've read really makes sense so I unfortunately can't explain it to you." ] }, { "cell_type": "code", "execution_count": 172, "id": "c4552b54", "metadata": {}, "outputs": [ { "data": { "image/png": "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0vQC6xiHuJSwsDDTEWDAFZ0pPXbs2BUdPDQ09Ir2BwAAQPl0RaU0LCxMFovlsvfnr18AAABcjisqpXPmzLmiUgoAAABcjisqpX99MxMAAADgKW5fpxQAAADwFLcvCSVJ3377rd566y3t3r1bZ86cKbB969atV3N4AAAAlBNunylduXKl4uPjZbfb9eOPP6patWoKCwvTr7/+quzsbN1yyy2ezAkAAIAyzO1S+vLLL+u5557TZ599JkkaM2aMVq9erd27d8vb21vx8fEeCwkAAICyze1SunPnTrVr105eXl6yWCzKzs6WJFWvXl2jR4/W2LFjPRYSAAAAZZvbpdTX11d5eXmyWCyKjIzU3r17XdsCAwN18OBBjwQEAABA2ed2KW3UqJF+/fVXSVKrVq00btw4LVu2TCtXrtTIkSPVoEEDj4UEAAAoT9asWaPx48ebjlGs3C6lzz33nOtC+uPHj1dgYKA6deqkdu3a6Y8//tCMGTM8FhIAAKA8KY+l1O1LQrVv3971fZUqVbR582b99ttvOn36tOrUqSObzeaRgAAAACj7PHbxfIvFouuvv14NGzakkAIAgFJnw4YNatu2rYKCghQYGKjbb79dX3zxhSTp2LFj6tWrl8LCwuTn56e4uDh9++23+W4fExOjgQMH5lv36aefymKxKCUlRZKUkpIii8WiBQsWaODAgQoJCVFkZKSGDBmi3NxcSdLo0aOVmJio7OxsWSwWWSwWtWzZUtu2bZPFYnFlOs/hcKhKlSoaOnRoEf1kisdVXTz/4MGD+vTTT3Xw4MECF8+3WCyaOnXqVYUDAAAoDuvWrVN8fLyaNm2qt99+W8HBwfrxxx914MABORwOtWvXTvv27dPEiRMVERGhN954Q23atNH69evVpEmTK76/ESNGqHPnzvrwww+1fv16jR49WrVq1dJTTz2l3r17KzU1VQsXLtTq1aslSUFBQapbt65uv/12zZkzR23atHEd6/PPP9fhw4fVq1cvj/08THC7lH744Yd6/PHHlZeXp0qVKhU4O0opBQAApcXQoUNVq1YtrV69WlarVZLUtm1bSdKSJUv0ww8/6PPPP9fdd98tSbr77rtVq1YtjR8/Xp988skV39/tt9+uN954Q5LUpk0bff311/r444/11FNPqWrVqqpataq8vLzUtGnTfLfr06ePBg4cqIyMDIWEhEiS5syZo7i4ONWpU8ftx18SuD19n5CQoPvuu092u12HDh1ScnJyvq99+/Z5MicAAECROHXqlDZu3KgePXq4CulffffddwoKCnIVUkny9vZWly5dtHbtWrfu83zhPa9u3bpKTU3929t1795d3t7eWrhwoSTJbrdr6dKlevLJJ93KUZK4XUqPHj2qvn37qmLFip7MAwAAUKwyMjKUl5enqKioi26vVKlSgfURERE6duyYW/cZHBycb9lmsxV4KWRhAgIC9PDDD+udd96RJC1YsEA+Pj7q1q2bWzlKEren7++55x5t3LhRrVq18mQej7LZbPLx8TEdAyXM+UuZBQQEyOl0Gk4DU46bDlCOBAYGFljHOERJEhwcLC8vLx0+fLjQ7aGhoUpPTy+w/siRIwoNDXUt+/r6KicnJ98+GRkZng2rP6fw33rrLW3ZskXvvvuuunXrpmuuucbj91Pc3C6ls2bN0kMPPaRTp06pVatWBRq/JDVu3Phqsl21nJycAr8cgNVqlc1mU3Z2thwOh+k4QJmXlZVVYB3jEJdS3CeUAgICFBsbq/nz52vw4MEFpvCbNWumV199VatWrXJNu+fm5urf//63mjVr5tqvatWq2rlzZ77brlq1yq1MNptNZ8+eLXTbLbfcoptuuknPPvustm7dqjfffNOt+yhp3C6lWVlZOnXqlCZMmKCkpKR825xOpywWC080AACgVEhKSlJ8fLxat26t/v37KyQkRD/99JPCwsLUo0cP3XbbbXrssceUlJSkiIgITZs2TWlpaUpISHAdo2vXrnr66aeVmJiouLg4LV++XBs2bHArz4033qjc3FxNnTpVcXFxCgoK0g033ODa3qdPHw0YMEA33HCD7rjjjqt+/CWB26X0iSee0IEDBzRt2jTVrl2ba5MCAIBSq1mzZlqzZo1Gjhypnj17ymq1ql69eho7dqysVquWL1+uIUOG6MUXX1R2drYaN26sVatW5bscVO/evbV3717NnDlTkydPVvfu3TVhwgQ98sgjV5ynY8eO6t+/vyZMmKD09HS1aNFCa9ascW2///77NWDAgFJ/Gai/sjjdfDGPv7+/Fi5cqPvuu8/DkTzHbrebjoASyGq1KiQkRBkZGZzNL8eODxn49zvBI4InTS+wjnGISwkLCzMdocSbM2eO+vXrp4MHD6py5cqm43iE22dKr7/+etcnDwAAAKDopaSkaM+ePRozZoweeuihMlNIpau4JNTrr7+ucePGadeuXZ7MAwAAgIsYPXq0OnTooOrVq+u1114zHcej3J6+b9CggX7//XdlZGQoKiqqwLvvLRaLtmzZ4omMbmP6HoVh2hAS0/fFiel7XCmm78snt6fvmzRp4rrOHAAAQGn0W8/uRXLcWnMXFclxyzK3S+ncuXM9GAMAAADlmduvKQUAAAA85YrOlD777LMaMmSIoqOj9eyzz15yX4vFoqlTp15VOAAAAJQPV1RKly5dqieffFLR0dFaunTpJfellAIAAOByXVEpTU5OLvR7AAAAuK9evXqaOnWqWrdubTqKMbymFAAAoBi0bNlSs2bNci3/8ssvioiI0Ouvv64dO3aU60IqXcW77yUpIyNDK1asUGpqqs6cOVNg+z//+c+rOTwAAECZtH79enXs2FFJSUnq06eP6TglgtuldNWqVeratatOnjwpPz8/2Wy2fNstFgulFAAA4AJffvmlunbtqhkzZujRRx+VJMXExGjWrFm65557NHr0aG3btk2hoaH68MMPFR4erlmzZrnOpB44cEA9e/bUpk2b1KhRI7Vo0ULr16/XmjVr5HQ6NXToUM2fP1+nT59WVFSUZs2apZYtWxp8xJfH7en7wYMH69Zbb1VycrKys7OVkZGR7+vYsWOezAkAAFDqrVixQg888IDmzp3rKqSFWbZsmdq3b69jx45pwIAB6tWrl2vbww8/rLp16+ro0aOaPn263n33Xde2VatWadGiRfrll1+UmZmpFStWKDo6ukgfk6e4XUr37dunYcOGqXr16p7MAwAAUGZ9/fXXio6OVnx8/CX3i42N1f333y+r1aoePXro4MGDstvtOnDggDZs2KDx48fL19dXN910U75ya7PZdObMGe3YsUPnzp3Tddddpxo1ahT1w/IIt0tp48aNdfDgQU9mAQAAKNMSExMVERGhe+65R1lZWRfdr3Llyq7v/f39JUknT57U4cOHVbFiRQUFBbm2V6tWzfX9XXfdpcTERCUkJCg8PFzdu3fX4cOHi+CReJ7bpXTmzJl64403tHLlSuXm5noyEwAAQJnk5+enpUuXytfXV+3atdPJkyev6PZRUVE6ceJEvkJ74UnC/v3764cfflBycrJyc3P10ksveSR7UXO7lMbGxmrXrl1q3769/Pz8FBQUlO+rYsWK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DD8aAMWJM6Uoc+x2u8LDw+Xt7Z1vvcPh0IIFC7Ru3TqdOHFCXl5//k2WmZmpoKAgE1GBMufYsWMKDQ11jS9JCg8PV3Z2tv744w9VqlQp3/4RERE6duyYMjMzlZubq7CwMNe2v34PoOzjTCnKnLCwMB09elS5ubn51n/77bfasGGDXnnlFS1atKjA69QsFktxxgTKpNDQUB07dkx5eXmudUePHpUkXXvttUpPT8+3/5EjRxQaGqqgoCBVqFBBdrvdte2v3wMo+yilKHOuv/56hYeH65133tGpU6eUm5ur7du36/Tp0/L29lZgYKBycnK0YMGCfLcLDg7W77//big1UDbUqVNHNptNixcvVm5urn755Rf99NNPkqRmzZrpp59+0ubNm+VwOPT111/r0KFDatq0qaxWq2JjY7Vw4UKdPn1a6enpWrFiheFHA6A48TGjKJPsdrvefvttbd++XXl5eWrQoIGee+45vfbaa9q6dasCAwP16KOPasqUKXrzzTdVtWpVHT58WBMnTlR6erpq1KihcePGmX4YQKm0b98+TZ8+Xampqapfv76uvfZanTt3Ts8995w2bdqk+fPn6+jRo4qKilLv3r1Vt25dSX++lOaNN97Q9u3bFR4ermbNmmnNmjWaOXOm4UcEoDhQSgEAJdJ//vMf/fjjj7wLHygnmL4HAJQIqamp2rt3r5xOp1JSUrR06VLFxsaajgWgmPDuewBAiXD27Fm9+uqrstvtCgoK0p133qm7777bdCwAxYTpewAAABjH9D0AAACMo5QCAADAOEopAAAAjKOUAgAAwDhKKQAAAIyjlAIAAMA4SimAUikmJkYDBw40HQMA4CFcPB9AqfTvf/9bISEhpmMAADyEi+cDAADAOKbvAVy2HTt2qH379rr22mvl7++vG264Qf/zP/8jSerZs6fq16+vFStWqH79+vL19VWTJk20cePGAseZO3euGjZsKF9fX1WpUkUjRoyQw+HIt8+hQ4f0xBNPKCIiQn5+fqpTp46mTp3q2l7Y9P2GDRsUHx+vgIAAVaxYUY888ojS09Pz7ZOUlKRatWrJ19dX4eHhat26tZKTkz31IwIAuInpewCXrWPHjoqIiNA777yjihUr6rffflNqaqpre1pamvr376/Ro0crJCRESUlJuvvuu7Vnzx5VqlRJkvT6669r6NChev755/Xaa69p586drlKalJQkSfrjjz8UGxsrSRo3bpxq1KihPXv2aO/evRfNtmHDBrVs2VLt27fXBx98oOzsbI0cOVKdO3fWhg0bJEnz58/XqFGj9Morryg2NlYnTpzQd999p8zMzKL6kQEALpcTAC7D0aNHnZKcS5YsKXR7jx49nJKcX331lWvd8ePHnYGBgc5hw4Y5nU6nMzMz03nNNdc4hw8fnu+2M2fOdPr5+TntdrvT6XQ6ExISnD4+Ps7k5OSL5qlevbpzwIABruUWLVo44+LinHl5ea51O3bscFosFudnn33mdDqdzgEDBjgbN258ZQ8cAFAsmL4HcFmuvfZaVa9eXcOHD9e8efPynSE9r2LFioqPj8+33Lp1a33//feSpPXr1+vkyZN68MEHlZub6/pq3bq1Tp8+re3bt0uSvvrqK8XHxysmJuaysp06dUrr1q3Tgw8+KIfD4Tpu7dq1Va1aNW3atEmS1LhxY/3888964YUXtHbtWp07d+4qfyoAAE+hlAK4LBaLRatWrdKNN96oAQMGqFq1arrlllv07bffuvYJDw8vcLuIiAilpaVJkux2u6Q/y6G3t7fr6/rrr5ckHTx4UNKf0/dRUVGXnS0jI0MOh0PPP/98vuN6e3vrwIEDruP27NlTkydP1sqVK9W8eXOFh4dr0KBBOn36tHs/FACAx/CaUgCXrXbt2vroo4907tw5rV+/XgkJCerYsaMOHTokSTp69GiB2xw5ckSRkZGSpNDQUEnS4sWLVa1atQL7XnfddZL+PCt7+PDhy84VHBwsi8WihIQE3XfffQW2h4WFSZK8vLw0aNAgDRo0SIcOHdKiRYs0bNgwhYWFadSoUZd9fwAAz6OUArhi3t7euvPOOzVs2DB16tTJVSBPnDih1atXu6bwT5w4oS+//FIDBgyQJMXGxsrf31+pqam6//77L3r81q1ba9KkSTpw4ICio6P/Nk9AQIBiY2O1c+dOjR079rIeQ5UqVTR48GAtXLhQO3fuvKzbAACKDqUUwGXZunWrBg8erIceekg1a9bUiRMnNGHCBMXExKhmzZqS/jwT+uSTTyoxMVHBwcFKSkqS0+nUc889J+nPM5qvvPKKhg4dqtTUVLVs2VJWq1X79u3Tf/7zH33yySfy9/fX888/r/nz56tFixYaNWqUatSooX379mn37t2aOHFiofleffVVxcfH66GHHlL37t0VEhKi1NRUffHFF/rHP/6hli1bql+/fgoJCVHTpk0VEhKidevWacuWLerfv39x/RgBABdBKQVwWSpXrqzKlStrwoQJOnTokCpWrKjmzZtrwYIFslqtkqTIyEhNnDhRL774ovbu3at69epp5cqVioiIcB1n8ODBqlKlil5//XVNmzZN3t7eqlmzpu69917ZbDZJf07fr1u3TsOHD9fQoUN16tQpxcTEXLI8xsXFae3atXr55Zf1j3/8Qzk5OapatapatWqlWrVqufb517/+pX/96186deqUatSoocmTJ+vJJ58swp8cAOBy8IlOADyiZ8+e+vHHH13voAcA4Erw7nsAAAAYRykFAACAcUzfAwAAwDjOlAIAAMA4SikAAACMo5QCAADAOEopAAAAjKOUAgAAwDhKKQAAAIyjlAIAAMA4SikAAACM+39bQklpmxsETAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 172, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='species', y='num_animals', fill='county')\n", " + geom_bar(stat='identity', position='dodge2')\n", ")" ] }, { "cell_type": "markdown", "id": "ddf0cc9e", "metadata": {}, "source": [ "## 100% stacked bar graph\n", "\n", "For a 100% stacked bar, you'll change the position of `geom_bar` to `fill`." ] }, { "cell_type": "code", "execution_count": 178, "id": "1a16c818", "metadata": {}, "outputs": [ { "data": { "image/png": "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GjXSRx99dMFzCbEAAABwlUsKsampqed9DQAAgMrTokULzZ07Vx07djS6FMOwJhYAAKAKat++vV599VX79o8//qjQ0FDNmjVLP/30U40OsNJl3J1AkrKzs7V27Vqlp6eroKCg3PHnnnvucpoHAACApM2bN+vee+9VYmKihgwZYnQ5VYLDIXbdunXq06ePTp8+LR8fH3l6epY5brFYCLEAAACX6fPPP1efPn20YMECPfTQQ5KkqKgovfrqq7rrrrs0ZcoU7d69W0FBQVq1apVCQkL06quv2mdq09LSFB8fr23btum6667Tbbfdps2bN2vjxo2y2WwaN26cli9frvz8fIWHh+vVV19V+/btDexxxTi8nGDMmDG66aablJqaqjNnzig7O7vMz4kTJ5xZJwAAQI2zdu1a9e7dW0uXLrUH2PNZs2aNunbtqhMnTmj48OF65JFH7MceeOABNW/eXFlZWZo/f76WLFliP7Zu3TqtXLlSP/74o3JycrR27Vo1atTIpX1yFodnYlNSUjRr1ixFRkY6pZDTp09rwYIF2rFjh3x8fNSzZ0917979vOd269ZNXl5e9ieGNW/eXFOmTLEfT05O1rJly3TixAk1a9ZMTz75pOrVq+eUOgEAACrLl19+qcjISMXFxV3wvNjYWPXs2VOSNHDgQD311FOyWq3Ky8vTli1btHbtWnl7e+v666/XQw89pO3bt0uSPD09VVBQoJ9++knBwcFq3Lixy/vkLA7PxMbExOjQoUNOKyQpKUlFRUVasmSJpkyZonfffVfff//9X54/e/ZsrVq1SqtWrSoTYA8dOqS5c+fq8ccf19tvv62oqCj985//dFqdAAAAlSUhIUGhoaG66667lJub+5fn1a9f3/7a19dX0rkJwsOHDysgIED+/v724w0bNrS/vuOOO5SQkKDx48crJCRE/fr10+HDh13QE+dzOMQuWrRIr7zyij777DMVFxdfVhEFBQVKTk5W//795evrq6ioKHXq1Enr16+/5LY2btyomJgY3XDDDfLy8tKDDz6o1NRUpaWlXVaNAAAAlc3Hx0cfffSRvL291aVLF50+ffqSrg8PD9epU6fKBOA/T0IOGzZM3333nVJTU1VcXKx//OMfTqnd1RwOsbGxsdq3b5+6du0qHx8f+fv7l/kJCAiocFsZGRmy2WxlliY0btz4gsFz4sSJ6t+/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AMB0CLEAAAAwHUIsAAAATIcQCwAAANMhxAIAAMB0CLEAaoSoqCiNGDHC6DIAAE7Cww4A1AgffPCBAgMDjS4DAOAkPOwAAAAApsNyAgAu89NPP6lr16664oor5Ovrq6ZNm+qf//ynJCk+Pl4tW7bU2rVr1bJlS3l7e6t169baunVruXaWLl2qVq1aydvbWw0aNNCECRNUUlJS5pyMjAwNGDBAoaGh8vHxUbNmzTR37lz78fMtJ9iyZYvi4uLk5+engIAAPfjggzp27FiZcxITExUdHS1vb2+FhISoY8eOSk1NddZHBABwEMsJALjMvffeq9DQUL3xxhsKCAjQr7/+qvT0dPvxzMxMDRs2TFOmTFFgYKASExPVuXNn/fLLL6pXr54kadasWRo3bpxGjx6tl19+WXv37rWH2MTEREnS8ePHFRsbK0maPn26rrzySv3yyy86cODAX9a2ZcsWtW/fXl27dtV//vMfnTlzRhMnTlT37t21ZcsWSdLy5cs1adIkTZ06VbGxsTp16pS+/vpr5eTkuOojAwBUlA0AXCArK8smybZ69erzHh84cKBNku2LL76w7zt58qStTp06tmeeecZms9lsOTk5ttq1a9ueffbZMtcuWrTI5uPjY7NarTabzWYbP368zcvLy5aamvqX9URGRtqGDx9u377ttttsbdu2tZWWltr3/fTTTzaLxWL7+OOPbTabzTZ8+HBbTEzMpXUcAFApWE4AwCWuuOIKRUZG6tlnn9WyZcvKzMD+LiAgQHFxcWW2O3bsqG+//VaStHnzZp0+fVr33XefiouL7T8dO3ZUfn6+9uzZI0n64osvFBcXp6ioqArVlpeXp+TkZN13330qKSmxt9ukSRM1bNhQ27ZtkyTFxMTohx9+0FNPPaVvvvlGRUVFl/mpAACchRALwCUsFovWrVuna665RsOHD1fDhg1144036quvvrKfExISUu660NBQZWZmSpKsVqukc2HSw8PD/nP11VdLkg4dOiTp3HKC8PDwCteWnZ2tkpISjR49uky7Hh4eSktLs7cbHx+v2bNn67PPPtOtt96qkJAQjRw5Uvn5+Y59KAAAp2FNLACXadKkid555x0VFRVp8+bNGj9+vO69915lZGRIkrKysspdc/ToUYWFhUmSgoKCJEnvv/++GjZsWO7cxo0bSzo363v48OEK11W3bl1ZLBaNHz9ePXr0KHc8ODhYkuTm5qaRI0dq5MiRysjI0MqVK/XMM88oODhYkyZNqvD7AQCcjxALwOU8PDx0++2365lnnlG3bt3sgfPUqVPasGGDfUnBqVOn9Pnnn2v48OGSpNjYWPn6+io9PV09e/b8y/Y7duyol156SWlpaWrUqNFF6/Hz81NsbKz27t2radOmVagPDRo00JgxY7RixQrt3bu3QtcAAFyHEAvAJXbt2qUxY8bo/vvv11VXXaVTp05p5syZioqK0lVXXSXp3EzroEGDlJCQoLp16yoxMVE2m02jRo2SdG7GdOrUqRo3bpzS09PVvn17ubu7KyUlRf/973/13nvvydfXV6NHj9by5ct12223adKkSbryyiuVkpKi/fv364UXXjhvfS+++KLi4uJ0//33q1+/fgoMDFR6errWr1+vv//972rfvr2GDh2qwMBAtWnTRoGBgUpOTtbOnTs1bNiwyvoYAQB/gRALwCXq16+v+vXra+bMmcrIyFBAQIBuvfVWvfXWW3J3d5ckhYWF6YUXXtDTTz+tAwcOqEWLFvrss88UGhpqb2fMmDFq0KCBZs2apXnz5snDw0NXXXWV7rnnHnl6eko6t5wgOTlZzz77rMaNG6e8vDxFRUVdMGy2bdtW33zzjSZPnqy///3vKiwsVEREhDp06KDo6Gj7Of/617/0r3/9S3l5ebryyis1e/ZsDRo0yIWfHACgInhiFwBDxMfHa/v27fY7DAAAcCm4OwEAAABMhxALAAAA02E5AQAAAEyHmVgAAACYDiEWAAAApkOIBQAAgOkQYgEAAGA6hFgAAACYDiEWAAAApkOIBQAAgOkQYgEAAGA6/wtNYHzfkCqhqgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 178, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='species', y='num_animals', fill='county')\n", " + geom_bar(stat='identity', position='fill')\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "9735c857", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }