{ "cells": [ { "cell_type": "markdown", "id": "012b1512", "metadata": {}, "source": [ "# Daily-Dose-of-Data-Science\n", "\n", "[Daily Dose of Data Science](https://avichawla.substack.com) is a publication on Substack that brings together intriguing frameworks, libraries, technologies, and tips that make the life cycle of a Data Science project effortless. \n", "\n", "Author: Avi Chawla\n", "\n", "[Medium](https://medium.com/@avi_chawla) | [LinkedIn](https://www.linkedin.com/in/avi-chawla/)\n", "\n", "# A Little Bit Of Extra Effort Can Hugely Transform Your Basic Matplotlib Plots\n", "\n", "Post Link: [Substack](https://avichawla.substack.com/p/a-little-bit-of-extra-effort-can)\n", "\n", "LinkedIn Post: [LinkedIn](https://www.linkedin.com/feed/update/urn:li:activity:7049335450402009088/)\n", "\n", "Twitter Post: [Twitter](https://twitter.com/_avichawla/status/1643572511945244673)" ] }, { "cell_type": "markdown", "id": "610348b9", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 1, "id": "220200d3", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import os\n", "import matplotlib.pyplot as plt\n", "import matplotlib.dates as mdates\n", "import matplotlib.ticker as mtick" ] }, { "cell_type": "markdown", "id": "76228559", "metadata": {}, "source": [ "## Dummy Data" ] }, { "cell_type": "code", "execution_count": 2, "id": "519d38f7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div><div id=f37846bf-01b2-4dbc-8b6e-5e36e3a64978 style=\"display:none; background-color:#9D6CFF; color:white; width:200px; height:30px; padding-left:5px; border-radius:4px; flex-direction:row; justify-content:space-around; align-items:center;\" onmouseover=\"this.style.backgroundColor='#BA9BF8'\" onmouseout=\"this.style.backgroundColor='#9D6CFF'\" onclick=\"window.commands?.execute('create-mitosheet-from-dataframe-output');\">See Full Dataframe in Mito</div> <script> if (window.commands?.hasCommand('create-mitosheet-from-dataframe-output')) document.getElementById('f37846bf-01b2-4dbc-8b6e-5e36e3a64978').style.display = 'flex' </script> <table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Spend_Category</th>\n", " <th>Profit_Margin</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>Clothing</td>\n", " <td>0.10</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>Home Decor</td>\n", " <td>0.43</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>Electronics</td>\n", " <td>0.13</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>Stationery</td>\n", " <td>0.20</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>Toys</td>\n", " <td>0.14</td>\n", " </tr>\n", " </tbody>\n", "</table></div>" ], "text/plain": [ " Spend_Category Profit_Margin\n", "0 Clothing 0.10\n", "1 Home Decor 0.43\n", "2 Electronics 0.13\n", "3 Stationery 0.20\n", "4 Toys 0.14" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame([['Clothing', 0.1],\n", " ['Home Decor', 0.43],\n", " ['Electronics', 0.13],\n", " ['Stationery', 0.2],\n", " ['Toys', 0.14]], columns = ['Spend_Category', 'Profit_Margin'])\n", "\n", "df" ] }, { "cell_type": "markdown", "id": "2a98f8a2", "metadata": {}, "source": [ "## Basic Matplotlib Chart" ] }, { "cell_type": "code", "execution_count": 3, "id": "c7987305", "metadata": {}, "outputs": [], "source": [ "def percent_formatter(x, pos):\n", " return f\"{x*100:.0f}%\"" ] }, { "cell_type": "code", "execution_count": 4, "id": "f3830565", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 864x648 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Define figure\n", "fig,ax = plt.subplots(figsize = (12,9))\n", "\n", "# Create bar plot\n", "plt.bar(df['Spend_Category'], df['Profit_Margin'])\n", "\n", "# Convert y-axis labels to percentage\n", "ax.yaxis.set_major_formatter(mtick.FuncFormatter(percent_formatter))\n", "\n", "# show grid\n", "plt.grid(axis = 'y',alpha = 0.45)\n", "\n", "# set title and and x-y label \n", "plt.title('Profit Margin for top five spend categories')\n", "plt.ylabel('Profit Margin')\n", "plt.xlabel('Category')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "d0115fc2", "metadata": {}, "source": [ "## Matplotlib + Little Extra Effort" ] }, { "cell_type": "code", "execution_count": 5, "id": "04e04da7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div><div id=640b9d17-f598-4c6b-9a89-232d4052e72a style=\"display:none; background-color:#9D6CFF; color:white; width:200px; height:30px; padding-left:5px; border-radius:4px; flex-direction:row; justify-content:space-around; align-items:center;\" onmouseover=\"this.style.backgroundColor='#BA9BF8'\" onmouseout=\"this.style.backgroundColor='#9D6CFF'\" onclick=\"window.commands?.execute('create-mitosheet-from-dataframe-output');\">See Full Dataframe in Mito</div> <script> if (window.commands?.hasCommand('create-mitosheet-from-dataframe-output')) document.getElementById('640b9d17-f598-4c6b-9a89-232d4052e72a').style.display = 'flex' </script> <table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Spend_Category</th>\n", " <th>Profit_Margin</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>Clothing</td>\n", " <td>0.10</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>Electronics</td>\n", " <td>0.13</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>Toys</td>\n", " <td>0.14</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>Stationery</td>\n", " <td>0.20</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>Home Decor</td>\n", " <td>0.43</td>\n", " </tr>\n", " </tbody>\n", "</table></div>" ], "text/plain": [ " Spend_Category Profit_Margin\n", "0 Clothing 0.10\n", "1 Electronics 0.13\n", "2 Toys 0.14\n", "3 Stationery 0.20\n", "4 Home Decor 0.43" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## sort the dataframe\n", "df = df.sort_values(\"Profit_Margin\", ascending=True, ignore_index = True)\n", "df" ] }, { "cell_type": "code", "execution_count": 6, "id": "8201757f", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAFzCAYAAAAjTv9dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAABvtklEQVR4nO3dd3gUVdvH8e9NqCH0XgREBESKNLugiApieSzYUVRUioiACMqjiI0iYlfs2BVQX0VRwQI+ShEbCAiKgiK9Sgk1ud8/ZnaZhCQkQAjo73Ndc+3OmTNzzszOzt579sxZc3dERERERCSQL68rICIiIiJyIFGALCIiIiISoQBZRERERCRCAbKIiIiISIQCZBERERGRCAXIIiIiIiIR+bNaWKPfh9keA27h4Ha299UREREREclbakEWEREREYlQgCwiIiIiEpEnAbKZ1Taz3ma2xMw8Ms0xs3VmtszMPjezm8ys8H6q03lmNsnMppjZRjP71sxahmkbzKxvJuudmo1tn2Nm35tZarr9/WE36z2VLr+b2Wwz67Kn+7kvmdkZZrbUzOab2VG5VEY+M7vGzKaZ2dTwtZlkZnVzo7ws6lHIzE7cn2VmZU/PV8mcmQ0Kj13svTYxj+tzQJ1zOWFmt4XHcqKZFc/r+oiI5JRl9VfTud0H2cx6AA/H5t3dzKwI8DhwTZg8AzjF3dfmdPs5qMftwH3hbGHgF6AasB0oEKavd/cS6darCsx099LZLOc+oDdQKJJ8irtPzCBvCWAeUCGSPMbd22enrP3BzN4Hzg5nH3X3HrlQxjPAdcAy4BBgK8EXuyHu3m9fl5dFPR4ANrn7XfurzCzqskfnq+yemV0EvBXOTnL3k/OwLgfMOZdTZrYeKBbOnu/u7+ZlfUREciqvu1isT5/g7puBm4ANYVIj4K5crkfvSPlbgbOADkBF4GtgIzAkuoKZlQbGAaVyUM5vwBvAjkjazZnkvQYYlS5tTg7K2h+eApYDC4CX9vXGwy8J14azW919B3ACcBlw974uL4t6XAfcsr/Ky4Ycn6+SbSvyugJwQJ5zOTWU4Dz8H/B5HtdFRCTHshzFYj/IsIXa3TeZ2XygcZjUOpfrkaYF2N1/An4KZ3f5idPMagHvA0fksJxU4A9gNHBpmHa2mR3m7r9Ftp8P6Ay0BbpHq5bD8nKVu39EEJTlllKk+xLn7lOBqblYZpyZGXAbcO/+KC8HcnS+ysHjAD7ncsTd7+Ug3wcR+XfL6xbkrESD9zUAZtYxXR/BjmZW3szeC/thDoqtYGY1zew1M/s97L/6o5n1NLOESJ6O6fsZhn3m2pjZBWb2d/r+iGZWDXiISHAcrjPRzNpkc98eiDzPR9BiHtUWmOXuv+9uQ2ZWx8yeNrP/M7M/zGylmb1pZodE8lQxs48j+7IwTL8yXGeRmdWI5D/PzCab2V9m9mtkvT/C/WwVHtto3+iO4bq1zOx/0eNmZqeZ2ddmttnMfjGzdtnYr37Am5GkiuG2jorkKW9BP+0FYV/c2WZ2V9hNJ5anXvj6p38d+5jZinCdzPpI9gSuB2LdhzqGdYjXy8ySzGywmf0W1uFnMxtuZmUieW4xsy2ROrxpZneb2ftmtilc7+RsHJM9OV9726792N+OHJvFYdrfZpYU2e5VZjbdzL4J30N9zGy33ajM7EIzmxWuuzq2v3t7HLKqj5mVC7cRP7/NrKkF5/ym8Py+OoNtFjCzgWH+H81sNHDS7vYxg+0UNrMBFvQDn2XB++RhMyuWLl9rM3vLzMaa2Voz+9PMhphZtMtVds65BAuuZT+Y2XdmNs/MrsqgXi3NbIIF9wnMjhyf5eE2L4vkzc718gQzmxvZzkgzy29mD4T7M8nMilraa4Zb5NoSbucIM3s7rPuf4XlQKV2eruF+TbOd1/zBOX1tRET2mLtnOlXv+4Fnd8pqO5lNQEeCVlEPqhJPLwlsiizrEVn2RiT9RmBWZH5OmKc2sDJMOy5MGxzOfwzkS1ePXeoQpl8SWTYxO+tkY3/vCp9PiGxjPVA8ku9j4Pj05cTWjeQ7LjxOo8P5osDiMO9vQOFI3jqR7Swk6MKREkm7KMzXM5zfRNDnNz/wTZi2JIN6xtbvGEk/K5K+AXgEOAZYFKYlA+WycbxqROucblm5cB8duDRM6xzO/wAUjeQ9I/o6EnTPSI2kHZ1FHe7K4vgXBqaFy24L09pEjnHlSN7bI9vZDDQO0/8bpm0FTsjmeZSj85WgJS+WvjbdOo2AVUD5SNpDYd5+4fzAcH7Ibup1bHhOfRLOJwJjgDf35jhkpz5A/ch2twCvAs2B78K0VKBBuu2+Hy77EUgI6zs5o2OYxT4XBL4I8x8bbiM5nH8vkq9HmNYtnG8cKee1HJxzBrwdLrskTHspnO8SyXchQVcuB5qFae+E8xuBGpG82b5eAjdE6jYSeJm076XyBP3gN0TSomWdEC77Kcx3eFjPXwmvLcBF4XpPh/OlCbpqDM7utVaTJk2a9nY64FqQzawk8CzBBw0EH3SPR7JsjTzvTdAf9QyCQOXRMP1ZoCywxt2nhGnvho9nANkdBWJZTuqeQ0Mjz4sBnSAY4YPgg2JyNrZxC8FxOtfMDnX3TUCs1bkmcGQkb/S4lQGaEHzwPE/QR/CzsBUn1kozxd0XedDvd2yYVgn4T2Q7mR2fjZHnv7t7D3efBnwVphUhCO73xjCCfQT4IHyMvcZHkbbfenTf6xN8IFckCDTeIwiQ9sRtwNHp6vAJQeBXneCLQczSyPP33f2H8PkL4WNB0v6ysCcyez0GEwTBACXN7OjIsmbAg+6+AsDMTmNnv/hnwsfY69/bghtTM9Oe4BeR483sZHdPBq4E/ozkydFxyEF9oufcBuAad58OjI9tCjglst3z2HmD6Sh3TwnrOzCL/ctIL+BkgvN8ariNb8JlLSP57gwfe4aPMyPLzslBeZ2A84F17LxHIXY87jezImZWkOD+gATgN3f/Nlwee38UJXhdYnJyvYy+l84k+MJZi+A4P+fuK9x9O7A6fcXNrADwGpAEvODu2939V2BuuI2uYdaLw8ezzayBu68J03a5Z0VEJLccUAGymX1J0IJThSBwO9XdO7h7SiarfOnuM919vLsf6+4jzKwO0CJcvjySN3rBvpY85u4TSBuYdQ9/zryRoMUsOz4hCPaWAxss6LtcMLK8aCbrJREERX+7eyd3P9XdVxP0X42tHz120cCrcjbrFrM28jz64brHQz9Z0BUg1od7s7vHbuiMvsZXh8cjvSTggfCD/EJ3/4+7b9vDqlwXeb4cwibdsEsQ8B8LbuaEtP3HN8eeuPsSdgZ3x6X/qXlfcPeN7PzyCGlv/roIeDIyHxs95u8wMIGdr2EC0CqLomIBTBLwafiTeIq73xqtTuR5do7DntRnU+Q1zeycuyTyfH7keTR/dnQOH6Pvl+sIbpKMlhH7AvVr+BgdvjKz92lGYsfjD3dPDZ/HjkdJglbzRgQBb/p67fI+3svrZbK7v+Duv7v7Ge5+XSb5YloRfHGE4MbemFj9Tw8fY+dRJeAbM+sNLHP3+3ezfRGRfSavb9JLw91b7D5XGt9nkNYw8nxz5Hk0yK5nZhYGM3npAYIWFQi6E3QgaHXqmdkKUe7+jJnFfl69jODDs0okS2ZfgNa5+4IM0pMjz1Mzeb4oO3XLhoTdZ8nUEewcziyz17gMwRB50RZLgJ89GCllr5hZOYIP8JiM6pGfoGvLFLK2niCoBDiMXeu8LzwO3BqWc4GZHU4QUM1y978j+RqEj8VsZ3/n/AQ3l0LWwdyTBK2NFQhe375AGzM7292zc95kdBz2pj7pRc+5OpHnm3KwjTgL+pnHAr6SsfSwVTTNEITufpUF45cXNLMBpL2ZMidDZMaOx+GR41GYncejBGmD2929j/fmevkDOdMg8vw+M7s5fF6OoP6x7Q8l+OKWSLBvw4AzzewCd1+XwzJFRPbIARUg74G/M0iLfthEh1OLfjgeKPs9CrifnR+yTxH0s8ysxTwjx4XrOcFPyG+RNkjOSEbHDYJ+fusIPuyjo1PEAsH17GwJ21s5Hjc7k3Uze41hZxAdldm+700dsqpHRnVIL7MgZp9x97Vm9izBl698BMFyfmBAJqvkAy4LW3azW8ZKMzuBYJSW2Ag0jYAPzKxxpMUzM1kdhxzXJwPR12xfXAOiv9bUNrPSkVbujFxJ8H4fT9A9YU9/uYDgeLTK6JiGv0T9StC/N6P38Q52jvW8N9fLvXkvvZZZi7C7/2xmLQnqGOtG1Qp4hZ3dYkREctUB1cViH5kdeR5tXUqMPJ93ALQeE/bvjXan2ErQtSRbwn6UnwF1CW5UW76bVXZXn/XA5QQtSSeGd5sXJ/ipeDNBgLKvAsy9MY+dLVyZvcYbCG5Y3FuZnScrwykms3rMzUYZ0dEOdjtyyV4YTvBnIhAEa+7uf6bLE/1loW36DaQfmSHdsg7h9o8huBEyFnA1JG1LZWYyOg57XJ/diG63xB5uYwU7uwMkkLbLTRpm9hDBF9mtwFVhP93MZHVtitW7MJE+1WEZ+cwsMfyCfRlBV59aZnZK2P+3I8H7pqu7x7qV7M/rZfSYtzFLOypK7LUMW5bnEHy5GhHJclZ4j4qISK7L6wA5TYtf+gtmdtZJz91nA9PD2TKRReUjzzP9U4ss6pA+Pad9FWPSH/Pn2NkH75mwv2isLunzpq/D0Mj2VoUtR5n17c1WlwZ3H0fQWrOJ4C7/LwhuOmrs7h9mseretAhnR3z7YZD+TjhbNDJMVvQ1fjXSEr833TkyfJ3DgGFkJKkMQHiDVCzg+ih281s68X0Jf6aP5Z/q7jm6MTQH5yvu/hc7u/QUJG2/5JgxkecPhC15sSHR7iO4ATIzCUDv8OarAaTtg5ucQf7sHIe9qU9W3ok8rxd5Hm3xz/KcDs+vNyJJA8ysbVi/ghYMYVcpvJHw5jDPemB7pG96RrK6tkSPx3Nm1jAsryhBF5fKYd2+JRhVYxHBDZDTCALm49z92cg+5PR6uSfvpdhx/JSdrc4nAYPCwJ3wdf1vuKwkcIO7b3T3LuzsM7+DnV/wRERyVV4HyEemm6+TYa60ojeJZfYhcx3BB1FFM2sSpsVanyYRabU1s/TdEaJ36Ud/nkx/c1rsTvXYeLzHhCNQZCgMXtsALWIfCgDhyBNPElz80wcsddPNp99+ycjz2CgR0Z9DzzOz2E1M0fonReuQrp5nE9z8V9fdD3f3pu5+jbvPyyB79PhEj2PRTJ4nRZ5HW6gyE91mGTOL3tjUk2DYOYDYuMqx13gO0D+SN7rvOfnnQ4i8zkB5C1wRzt/Nzha4WB3OIHhfLWHnXfnpnWdmzcPnsZsNtwF9dleZvThfY4YStFBOcPcfM1j+GjsDplLARDNbSjAKRkF3/99uqtjddo45HBs9YaK7/5JB3uwch+zWJ6fn3KsEf2MP0MGC8awLszNIg6Bv7O70Z2fLaBFgnJktJuiqtM7dl5K2hbo2wQgWb4Z5gPgY0bGuVlmdc49GyqsBzDCzvwhusJsVaxkORyqZApzt7oe6exN3vygc2SO9bF8vycb1N7y2RJdVgfgX22iXnr7AOjNbRDBCSfTfH+83szPC57Hz6NXweikikvs8izHgcmscZIJg4ifSjvHrBBfpyUBCJus9nS7/ZjIZG5PgRq7RBB8mUwh+lh8AFInkuZrgzu7oNlcS9A+8kOCu+uiyn2PrE3w4fRHWYTxwQRb7ey7wV2Q7y4H/RpZXIBgiKTZfhKA/8N8ZHKP5hOOdEgx9tIwgWBhBECCdQDAG70aCD51CBDfHrEq3nV+BWhnUdXm4fDVB94C5BGNNf0UQyNcO872ZbntbgUEEwzV9FUnfFh7ns8PXN5Y+g3B81kyO2e0ELevRMv4iHDc3zFOVoHXsD4K/WP6N4MO8VCTP6enKdYJzLykH5+vN4XFeQ9CHNDpmcCngYYLz7GuCrgHPA1XSbaNjpPx3wnU+DF/j/wEnZaMee3y+ptvO/wGnZ1FOCYIh6v4iGFN4DuH4vbupX8d0Zf9KME5umb05DrurD0EgOzbdvvcn6J+/JJL2B3BauvVeDs+zWQTn9w0EXSe+C4/TZdnY70rhebiSoKV8KvCfdHkeIOj28zvB8ICFgG5h2cuB7jk45yoT/HqxIizvO+DidOvHxi7/m53v49kE18IXSffeI3vXy47h8Y8e54nptlMk3EY0z2oi10fgirDOm8N9fAGoEFl+FzvHrp5B8L5+BEjM7ntWkyZNmvZ2MncnMzX6fZj5wnQWDm6X2z+xy34QtkZldZPfGoLW5ZVZ5JF0LPinwRfD2ZfcvWPe1Sbv6DjsH2b2NXB8Flm2Ak3cfc5+qpKIyEElr7tYyIHnEtL+6UJ6pQn+GEFEDlzXknZc4/QKsbNbkIiIpKMAWeLCsXH/j+Df5UoRnB8JBD+bVmPnDV77aizkfxP9whLQcchl4Q2AHxF0RYmNSZ2PYOSLSgTjCoPexyIimVKALFEVCe5kL0TwL1nu7qnuvoWgL2MpYLS7T83LSh6kon8qktXfNf/T6TjkvpIE3aQKEryPU8P38lZ2jnM+meCv1kVEJAMHyh9myAHA3f9nZu2ATsB0M/ub4Ca7HQTDvr3FzlZkySYz60Nw41HMqWb2I9DO3ffFWM0HBR2H/cPdfw+HTbsR+NrM1hO8j7cRDJM2nuCmQA2ZJiKSCd2kJyIiIiISoS4WIiIiIiIRCpBFRERERCIUIIuIiIiIRChAFhERERGJUIAsIiIiIhKhAFlEREREJEIBsoiIiIhIhP4o5J8t2+NYi4iIiOSxA+Y/NfK8BdnMDjWzh8xsrJm9aGbPm9lTZnaemX2U1/WTfWfBggWULl2at956C4C///6bJ554gqOOOoqRI0dmmpbRupK5bdu28eabb3L66adz7bXXZpn3gQceoEqVKmzcuDFb2960aRPPPfccxx9/PAMHDtwX1c1VGzdupEqVKjzwwAN5Wo/t27dz77330rVrVw499FAuvvhi1q5dm2vlff3111x99dXUr18/18rYHxo0aMCNN96Y6+WMGjWK0qVLs2DBglwva19Zvnw5vXr14sorr6RKlSrccccdZPXHX3vrhx9+oFu3bpQqVWqvtrOn1/KD7dojB788DZDN7ELgW2AmcI67X+3u1wK3AZcCx+Vl/WTfKlmyJK1bt6ZmzZpAEDQUK1aMGTNmxPNklJbRurlt+/bt/PTTT/ulrH0tJSWFI444gv/973+kpKRkmbdevXq0bt2awoULZ2vbO3bsoFatWkyZMiVXP4z3lcKFC9O6dWvq1auXp/W4+eabSU5O5sknn2Ts2LFMnDiRyZMn51p5FSpUYM6cOdn+4nMg+P3331m3bl2atNatW9O0adNcL/vQQw+ldevWlCxZMk36999/n+tl74mUlBROP/102rRpw8svv8yQIUN4/PHHWbVq1T4tJ7r/pUqVYsmSJbu8Rjm1p9fyg+3aIwe/PAuQzaw58BrwiLu/6JEz3t3XAVcQBM7yD1GqVClGjRpF8+bNAShbtiwnnHBCmjwZpWW0bm579tln+e677/ZLWftakSJFaNSoEeXKldtt3nbt2vHSSy+RP3/2eluVKFGCFi1a7G0V95v8+fPz0ksv0a5duzyrw7Zt23jhhRfiAUH9+vVZvnx5rtapVq1a1KlTJ9e2nxv69eu3S/D10EMPcfXVV+d62c2bN2fUqFFpWkeXLl3K3Xffnetl74nJkyczc+bM+Dl1xRVXsHbt2my957Nr06ZN3HLLLfH5GjVq0KBBg73e7p5eyw+2a48c/PKyBXl4WP4jGS10923AkP1aI9nvEhISspW2P40fP56ePXvmaR32hXz5cuftnVvb/adasWIFW7ZsyfaXkH3lYHqdBg4cyOjRo/O6GnFr1qzhrLPO2uvW0tzyxx9/AOTaObV582bat2/P77//niY9r8+pvC5f/l3y5Gwzs5rAicC37v53Zvnc/cN0690Q9k9+0symm1k/M8sXLmtsZo+Z2WozK2FmI81so5l9b2ZVIts4zcweNLMhZvaLmX0bpl9uZkvMbGE4X9TMuptZipmNDNMamtkjYRlJZva0ma01s7lm1jTsT/2JmW02s6lmVilSbv6wvg+b2edmNs3MTkm33VVmVtvMZofbLJJZfTM5rgXNbJiZPW5mjzRo0IDnnnsOgOTkZEaOHEmLFi0YOHAgd955J8WKFePpp58Ggp/Sbr75Zq688krq169Pjx49SE5OzrCcxx57jAIFCnDIIYcwa9Ysfv/9dy699FLMjHPPPZdffvkFgE8//ZRixYrx6KOPsn79ep588kmaNGmSpm9xdmS07g8//ED37t0pU6YMf//9Nx07diQpKYkmTZqwePHi+LqpqakMHTqU/v378+CDD9K1a1c2b96caVnz5s3j1VdfZdu2bbz00kt07tw5vj9//vkn119/Pbfeeivt2rWjXbt2zJ49O9NtTZ48meuuu46GDRsyf/58TjzxRJKSkmjZsiU///xzPN/s2bO56KKLGDBgAOeccw4nn3wy8+bNA2DkyJEULlwYM+Phhx+Or/PNN99QsWJFbrrppt3+3PjVV1/RsGFDihYtyq233hpPnzNnDj179qRMmTJp8v/1119cd911PPHEE/Tu3TvL1+vdd9+lVq1alChRgkceSftdN7NzanfnYk6P4W+//Ub//v2pWrUq33zzDSeccAKVK1dm8eLFvPLKK/Fyol577TU6d+5Mp06dMjwnn3rqKW6++WbOOussGjZsyJgxY9LsV48ePejfvz9NmzalbNmymR6fJ554It4K9+KLL9KpUye++OILIAjCbrrpJvr06UP79u1p0aIFX3/9NRB08RkzZgxnnnkmnTp14umnn6ZkyZL0798/07LGjx/PBRdcQM+ePTn//POZNWvWLnmy2q/sHJd33nmH6667jh49enDsscfSt29ftmzZstvXIatzfNy4cUycOBGA/v3707lzZ1JSUvi///s/2rVrF+9HP3nyZBo0aICZ0bVrV/7+O/jo+Omnn2jSpAk333wz27ZtA+Ctt96iR48eXHDBBdSrV4+nnnoq0+P2xx9/cMcdd1C1alUWLlxIamoqjzzyCEuXLuWXX36hc+fOvPTSS0DQqnrHHXdw0003cfzxx3Pqqafy448/AkG/72uuuSb+C8HFF19M8eLFadasGQsXLuTHH3/kuOOOo0iRIrRt2zZN95fXX3+dfv360bt3bypXrsyFF16YaX1vuukmnn32WSBode/UqRNLliwBYObMmVx77bX06dOHU089lUsuuYRFixYBsHbtWh5//HGaNGnC888/T6dOnShevDgffvjhLmU8/fTT/Pbbb6xevZrOnTszfPjwNMvXrVvH5ZdfTtGiRTn66KNZtmxZfNmOHTsYPHgwN998M61ateKYY46Jn/MZXctnzpxJjx49KFu2LL/88gtHHnkkdevWzfI6DVlfe7K6VseuPyeddBIDBw5k/PjxNGrUiKSkJLp3746788gjj1C1alVKlizJo48+mmbbOfmslIOcu2c6Ve/7gWd3ymo76SegHcEIC2/nYJ1+wPuR+drAVmBYOF8ZeD3c7n+BWkCTMM+jYZ4CwILINkoBH0TmXwYWpiv3T2Bk+PxwYGxYRk+gJlAPWAnMCOtYHWgGJMfKDdd9Djg6Mv8isAmoAdSJbPd2oD3wLFAoq/pmcIz+CyyJzfft29cTEhJ848aNvnr1ah83bpwDfswxx/jYsWP9xhtv9I8//th//vlnv/jiiz01NdXd3efPn+/58+f3Ll26eGauueYar1SpkqekpLi7+8aNG7148eJ+2223xfOsXr3ar7rqKnd3X7lypb/44osO+IsvvhjPs2DBgt2mZbTu4sWL/dJLL3XA77nnHv/111/9u+++84IFC3r37t3j2xo0aJA3bNgwPv/iiy96uXLlvEWLFv74449nuG8Z1WnVqlVepUoVnz59ejytY8eOXrJkSV+0aFGG25k3b54fffTRXr58eb/99tv9xx9/9JdfftkLFy7stWrV8i1btri7+2GHHRY/bjt27PDKlSv7xRdfHN/OkCFDHPC5c+fG0zZv3uzNmzfPsNyY6tWre6NGjfz555/35cuX+6233uqAz5o1y92D1/nss8/24DIQ2L59ux955JE+fPjweNopp5zi9erV85NPPtnnz5/v7u6At2jRwt966y1fvny5X3bZZV6wYEFfu3atu3uW51RW5+KeHMPffvvNb7jhBgf8xhtv9A8++MA7dOjg69at848//tgBHzBgQHybjzzyiF900UXx+dtuu80B//77793d/e677/ZRo0bFl991112eL18+nzJliru716tXz9etW+fu7lu3bvWTTz45y9cho/Npy5Yt3rBhQx8zZkyacgoWLOjffvutb9y40adMmeKFCxf2Bg0a+Ouvv+633367v/zyyxmWMWHCBK9YsaKvWrXK3YP3TNmyZb169erxPLvbr90dl9dff90bN27s27dvd3f3FStWeLly5fyCCy5wd8/yddjdOR57fy9YsCB+fL755hsvVKhQ/Bri7j5z5kwHfMSIEfG01NRU/89//hM/115++WUfOnRofPnIkSMd8LfeeivDY/fHH394ly5d0pTv7t6yZUtv2bJlmrxnn312PM+OHTv81FNP9QoVKvjff//ts2bN8iZNmniZMmX80Ucf9SVLlvhXX33lBQsW9BYtWvhDDz3kS5YsiZ/7Dz74oLsH17Loe/m3337zyy+/PMO6Zna83N1//fVXL1++vP/555/uHryXW7du7dWrV/cNGzb40qVL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lTEgLOMCYAlB3+TuBDcUXk9wU9564Kpw20UIxnxeBawOt1kiXHYaMCvc7lPsvOkwy/pmcCxPAxYRdF+595tvvvFixYr5JZdc4n/++Wf8hqwqVarscpPaF1984c2bN/dChQp5/fr1fezYsZ4dX331lfft2zdNWu/evX3q1Klp0pYsWeKdO3d2wE8++WT/8ccf06S1bNnSJ0+evNu02LoTJ070evXqOeADBw705cuX+0svveTFixf3pKQkHzlypLu7jxkzxkuWLOklS5b0AgUKeHg8vVKlSv7HH39kul/du3f3YsWK+fXXXx+/keqnn37y008/3U866STv2rWrd+rUKX4DZGauuuoqL1OmjHfp0sUHDhzoV155pffs2TM+gkWsrKSkJG/UqJFPmDDBb7vtNi9dunR8H6Kuvvpqf+qpp7Isc/Pmzf7www97vnz5/JBDDvExY8b4woUL/aabboofwx9++MG/+uqr+DG86667fN26dZ6amurnnHOOV6xY0RMTEz0hISF+zC6//HJftWqV//e//3XAGzVq5OPHj/fZs2fHRxRp3769//LLL+6e+Tm1YsWKLM/FnB7DKVOm+EknneSAX3DBBT579mx3d1+3bp3feeedDniDBg3iN5KlpKT4wIEDvUKFCl6yZEm/4oorfMWKFfHyYssrV67sxYsX93PPPdeXLFkSX16oUCGvUqWK33zzzd67d29/7LHHMq37N9984+edd54DftRRR/moUaPid9v/8ccffuGFF/rRRx/tXbp08Y4dO/pPP/3k7sENe8OHD/d8+fJ58eLF09yElpGtW7d6jx49vGTJkl6mTBnv0aOHX3755X7GGWf422+/7du3b9/tfu3uuLi7P/30016/fn2/9NJLvVOnTj5o0KD4DVuZvQ7uuz/H169f7y1btvTSpUv7iBEjfNu2bf7oo4+6mXnlypV93Lhxu+xz3759/bPPPsvweDzxxBN+6KGHemJiop9yyilpRoBJ78cff/QWLVo44F27do0fk08//dQrVKjgjRo18nnz5rl7MDJPhw4dvHjx4l6xYkXv1atX/Dx8//33vWLFip4vXz5/7LHHfN26df7888970aJFvXjx4v7888/72rVrfdiwYZ6QkOBVqlTx9957z6dMmeKAN23a1G+77Ta/4YYbsrxJ79133/X69es74BdffLG///778WVffvml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05KTkxk7dixt27bNcJ2nnnqKUqVKcfHFF6dZJ2bTpk1k8wcfERGRPJGdvrIHJHf/28xGAZcR9P2938zucPcdAGbWgoz3bzawmaAV+WIze5Ogu8OF4fKVwB/h89inetHc2YtMzQe2ELQiXxDWsShw1n6uh/zDJScnM27cOAAWL17M+vXrGTMm+DHlzDPPJDExkX79+nHPPfdQqlQp6taty/Dhw0lNTaV79+67bG/NmjUMHDiQTz75JJ7WokULbr31Vl544QXcnc8//1w37omIyAHtoA2QQ92BIwgC5H5ANzNbCFQBSgM906/g7pvM7H6CvsbnAAsJAuTKYZY73D01fD433P75ZvYdMNPdr861vdlZx2QzewzoA1wA/E5wI19ibpct/y4rVqygffv2adJi8wsWLKBGjRr069eP1NRUBg0axOrVq2nWrBkTJkygQoVdexLdddddnHPOOTRp0iSe1rhxY4YOHUr//v0BGDZsGI0aNcrFvRIREdk7drD/1GlmhYGuwMUEwWxBgpvrJgFDCUa6GADg7hZZ72qCUSLqEXRjmAkMd/dRkTz1gOeBowhac79z92Zmdlf6bZrZyUBs1IxT3H1iJvkmAi2BSe5+cpiWUb6CBKNaxP5+7HUgJazzFneP9aPO1KxZsw7uF1eyrX79+nldBRERkb11wPyj1EEfIP9TmVkFgkD473C+CDCd4CbDqe6+239eUID876EAWURE/gEOmAD5YO9i8U92HPCqmU0HNgDNgYoEN/TdkZcVExEREfknO5hHsfinWwB8BzQEziToJ/0+0MLdP83LiomIiIj8k6kF+QAVjpHcMq/rISIiIvJvoxZkEREREZEIBcgiIiIiIhEKkEVEREREIhQgi4iIiIhEKEAWEREREYlQgCwiIiIiEqEAWUREREQkQgGyiIiIiEiEAmQRERERkQgFyCIiIiIiEQqQRUREREQizN3zug6Se/TiioiIyMHC8roCMWpBFhERERGJUIAsIiIiIhKhAFlEREREJEIBsoiIiIhIhAJkEREREZEIBcgiIiIiIhEKkEVEREREIhQgi4iIiIhEKEAWEREREYlQgCwiIiIiEqEAWUREREQkQgGyiIiIiEiEAmQRERERkQgFyCIiIiIiEQqQRUREREQiFCCLiIiIiEQoQBYRERERiVCALCIiIiISoQBZRERERCRCAbKIiIiISIQCZBERERGRCAXIIiIiIiIReR4gm9nlZvZKurTzzcwj0zYzW2Bmg8yscA63b2Z2nZlV3os61jSzn8J6vLun29nXzOwFM/sut8t5/vnnOeKIIyhSpAhNmzblk08+SbM8NTWVu+++mxo1alC+fHl69+7N9u3b48s3b95Mnz59OOSQQ0hKSqJdu3bMnz8/zTbef/99GjduTGJiIvXq1eO1117Lsk4rV67k8ccf36v9atiwIWbGH3/8keHyq6++GjPj9ddf36ty0ktNTWXw4MHUrFmTxMREWrRowbfffpsmz5YtW+jRoweVK1ematWqDB48GHePL1+zZg2dOnWiYsWKlChRgssuu4wVK1ak2ca4ceNo2rQpSUlJNG3alC+//HKf7oeIiMg/lrvnyQSUBj4AhgBvA48B54XL7gcWAoXDqSTQCvgdeDeH5XQA/gZsL+r6FPANUBGonFfHLIN6/QSMyCLPXnv55Ze9QIEC/vrrr/vKlSt9yJAhXrBgQf/555/jebp06eINGzb0n376yRcuXOjNmjXz+++/P778mmuu8WrVqvmUKVN88eLF3r59e69Zs6Zv377d3d0nTpzo+fLl84cffthXrlzpL7/8sickJPhnn32Wab1atWrlN9544x7v16ZNmzwhIcHz5cvn48eP32X5jz/+6IULF3bA582bt8flZOTuu+/2kiVL+scff+zLly/3m266yUuVKuWrVq1yd/fU1FRv166dn3rqqf7777/77Nmz/dBDD/XXX389vo1TTz3VjzrqKJ81a5b/9ttv3qJFCz/ppJPiyydNmuQFCxb0559/3lesWOG33367JyUl+Z9//rlP90VERGQfyvPYKjblZXCXBFwKzAKSgRuBQ8Nl44F3MlinFeDA0Tko5wng872s62zgzrx+sdLVKRHYAXTKIt9ea9y4sXft2jVNWt26df3uu+929yAQS0hI8Llz58aXjxw50o844gh3d1+zZo0nJCT4qFGj4suXLVvmgH/55Zfu7n7eeef5mWeemaaMNm3a+DXXXJNhnVJSUrxYsWL+0ksv7fF+ffXVVw54/fr1/bHHHttl+WmnneZNmzb1EiVKeGpq6h6Xk15KSoqXLVvWhw4dGk/bsWOHFy1a1F9++WV3D76UFC9e3FevXh3Pc9ddd3nbtm3d3X3GjBkO+DfffBNfPnXqVAfiAfBZZ53ll112WXx5amqqly9f3keMGLHP9kVERGQfy/P4KjblWRcLd98IbCQIeF8BGrj7gnBxU+CHDFb7giAoPCWWYGYdzGyGmSWb2WIze9TMEsNls4GuwClmNidMq2Rmr5jZcjPbaGZTzaxVRnU0sxPMzIF6wEAz+9LMKptZqpm1CbtdLDazwmbWysy+NrPNZvanmd1nZgUi2xpvZs+E3URWh+WfZ2bHm9k34Xr/M7NS2TyEjYEEYHq4/WJm9kRYn2QzmzF69Oh45smTJ1OkSBFmzpzJ6aefTmJiIo0bN+bXX3/NspARI0bQt2/f+Hxqaipr164lf/78AAwfPpyzzjqLOnXqxPOUKlWKP//8E4AiRYowfvx4zjrrrPjyVatWAcS3MXDgQIYPH56m3FWrVsWXR02fPp2EhAQ2bNjAVVddxdChQwH4/PPPOeGEEyhSpAjVqlWjf//+abp5ZLSdEiVK0KxZM3755Zc0yz7++GO+/vpr6tWrR5MmTTAzAD766COOO+44kpKSqFChAldddRUrV66Mr3f66adz77330qFDBxITE3nnnXd2Kdfdeeedd7j66qvjaZs2bWLLli3x/X3wwQe5+uqrKV26dIbHtEaNGkyYMIHmzZtnekxHjx7NI488El+emprKjh074vsiIiIiWcjL6ByoDTQHigPnhmk1CYLmdpmssxoYGj6/ElgP/IegG8ZRwB/AXeHyJGALcAlQACgIzAVGh+WUAe4laMFOzKCsfMAZYX0qh9s4B9gEjAvrXxU4HdgG9AXKAscBfwF3R7a1BlhCELCXB94BVobbaQTUCbd7bTaP3c1hvfOH858DkwiC+VJA53z58vn8+fPd3f2RRx7x4sWL+6mnnupTpkzx5cuX+1FHHeU33HDD7r/PRQwZMsTz58/vP//8s2/cuNELFSrkL7zwQpo8zz77rFeoUCHD9VNSUrxdu3Zes2ZN37p1a4Z53nrrLQf8008/zXD95557zosVK+bJycmekpLin3zyiRcoUMAHDx7sK1eu9MmTJ3uVKlX8jjvuyHQ/Lr/8cm/RooXfe++9fvrpp6fZfoMGDfzOO+/0Jk2aeJ8+fdzd/fPPP/dChQr5s88+62vWrPF58+Z5kyZN/KqrroqvW7p0aa9du7aPGTPGFy1a5Nu2bcu0/KguXbp4iRIlfNWqVf7rr7864J9//nmaPP379/djjjkmw/WTk5O9SZMmfuKJJ2a4fOPGjX7jjTd6hQoV4t04REREDkB53nIcm/K8ArtUCC4KA9JKGSzLD2wHbgvnTwVOTpdnAvBE+LxJuK0a4XxZ4GqgWCT/CWGecpnU5xZgQWT+boI+zWXC+QTgt1iZkXy9gd/C54eFZfSOLH8kDJCTItvZDFySzeP0KjA5fJ4IXEWkfzRQhcjP8B06dPBy5cr5unXr4mfhGWec4Z06dfLsGjJkiJuZP/DAA+4e9B0G/LfffkuT76abbvLmzZvvsn5ycrJfcMEFnpiY6JMmTcqwjFdffdULFiyYZf/i7t27e8uWLd096J5Qs2bNXbqBDBs2zGvWrJnpNurUqeO9evXyMWPGePXq1ePpzz33nFesWNGXLFniCQkJ/tZbb7m7+7Rp03zs2LFpttGpU6d415DffvvNAX/mmWcyLTO9HTt2ePfu3T0hIcHffPNNdw+6pxQoUMC3bNmSJu8555zj7du332Ubq1at8pNOOsnLli3rc+bM2WV5x44dPV++fF6iRIkMl4uIiBxA8jwOjU15PopFBpoBy919aQbLjiYIkqeH8yuB883sEzObZGbfsvNmvlj+1e6+MJxfT9CK/JKZfWZmU4C3gI3uvvO38l3r8126+dHuvjoyXxN4NN1664By4fPmQArwXGR5U2CMB11NAI4kuCHx+0zqkVG9YsdhM8EXh4fM7FMz+xr4H0DNmjUB+Pbbb+nQoQMlSpSIb2DmzJk0aNCA5ORkKlWqRNmyZSlbtiyVKlVi8+bN8Xzbtm3jmmuu4fbbb+exxx7jlltuAeD333+nWLFi8TJipk6dykknnZQmbcmSJbRs2ZIvvviC8ePH06JFizTL3Z3//ve/XHHFFfTq1YvHHnss0x3/5ptvaNasWXy/fv/9d2666aY0eUqWLJmm+0PU+vXr+eWXX2jWrBl16tRh0aJFbNmyheTkZO68807uuecefv75Z1JSUuLllC1blq+++oq2bdty8sknc/TRR/Pqq6+mOb5FixalQ4cOAPz222/x41m2bFkaNGiwSx3OPvtsnnvuOUaPHs3FF18cP6Z16tShUKFC8bypqal88803uxzTuXPncswxx7Bo0SL+97//ccQRR+yyr4MGDeLdd9+lUKFCPPTQQ5keUxEREYnI6wg9/UTQVWBcJsveJehCkZ8gwNxEMPrFqUAtgn65DpwU5n8e+CSy/lvAfOAKgtblsgTdLT7Loj7zgX6R+eXAZZH5y4GtQL506z0O/Bg+HwZMjyxLCOse3c61BEH1LqNtAIcAzSPzxYFU4IpwfgiwDLiB4EtBJeCBWAvqhg0bPF++fP7BBx/Ev6L9+eefDvjkyZN9+/btvmjRovi0dOnSeL61a9d6y5YtvVixYj5u3DiPGjFixC6ttH/88ccuXQRmzpzpVatW9Tp16vivv/7q6W3ZssUvuugiL1CgwC7dNdLbtm2bFypUKD6iQ6zFOSUlJU2+bt26eaNGjTLcxueff+6A//LLL75582bPly+fz5kzx++//36vX7++79ixwwcNGuSlS5eO71O5cuX80ksv9Y8++sjnzp3ry5Yt84SEhPiNdX369PHTTjstzT5Fj+mKFSviyxYtWuT169f3SpUqpbnRzt29X79+3qpVqzRpkyZNcjNL01L/xRdfeMmSJf3444/35cuXZ3nM3N0HDx7sJUuW3G0+ERGRPJTncWhsyvMKpKkMWBgk3pvBslZhUNg+nH8wFoBG8gwmuImvSDg/A7g/fF4sDJ7/E8lfluBGwfsyqU/JcJ3W4Xy1cP7wSJ7zwnpFu22UIegrfXs4P4lIFwygQbidWpG0EcCnmdTjSWBCZP5MghbpiuH8auDmyPJCwB+xUQwmTZrkQJpA6u233/YCBQr45s2bPTPbt2/3k046yStUqOAzZszYZfnHH3/sJUqU8B07dsTTbrjhBj/qqKPiIz8sWrTIy5Ur58cff7yvWbMmw3IuueQST0pKynJYt5jvv/8+zdBr77zzjpuZr1+/Pp5n1apVXrp0ab/vvvsy3MbQoUO9ZMmS8Toeeuih/s4773ipUqX8448/dvdgZI1YwPvoo496qVKl0oxm8dRTT8WDbHf3U045xW+//fbd1n/9+vVeu3Ztr1OnToZDro0YMcKPPPLINGlt2rTxc889Nz7/ww8/eJEiRfy8887b5fVLTU31ww47zF955ZU06V26dPEGDRrstn4iIiJ5KM9j0diU5xVIU5ngpjcnGP6tMMG4w82BAQQ3pN0byXtjGEw3DwPdHgTdDGL9fi2cv5XgZj0j6JLxNMEYzE2AyWF5HTKpz6nh8lLh/PnA2mgrL1Ai3O7zYX2PAqYAM4EiBDf6bQA6Rta5GliTrqzvgEGZ1KMvsApoSNCfeTJB94zY8m+BsUAFoC7wPhAfiu3BBx/0Qw45JM0Z2LdvX2/SpElmJ6i7u993332eP39+//rrr33z5s3xKXbz2datW7169ep+5513+rJly/yRRx7xxMREnz59enwbp512mlevXt2XLVuWZhuxoPq1115zwEeNGpVmeWY38L3yyisO+F9//eVbtmzxdevWedmyZf2aa67xpUuX+g8//ODHHnusN2jQwJOTkzPcRvv27dO00rZp08aPOuqoNDfrValSxW+77TZ3dx87dqwnJCT4xx9/7GvWrPGXX37ZixUr5vnz5/fU1FRPTU31EiVK+DvvvJPl8XR3v+6667x48eLx1uvYFBsTeuXKlV6sWDF/+umnfenSpd63b18vW7asL1y40N2Dmwjr1q3rzZo18/Xr16fZRqwVvXPnzl63bl2fMWOGL1u2zB988EHPnz+/v/fee7utn4iISB7K81g0NuV5BdJUBi4LA9LYlEow+sPHwNnp8hYEXiLoV7wMeBMYCiyO5HmLoH/uA+H8aQSjWGwiaF2+Otz+dZnU59ZYwB3O308G3TEIunZMCstaQtAfuUS4rF64L/Ui+Z8ExkfmCxGMgnF+JvVIJLgpb004vRoL2iPlf0fwJWIe0AeYEWvRvPTSS/28885Lcwa2atXKO3fuvMuZGVWzZs3oaxGf+vXrF8/z008/+XHHHedJSUl+wgkn+LRp0+LLYt04MppiLbWtWrXKcPkll1ySYZ1+/vlnr1WrlicmJvp3333n7kGrcosWLbxw4cJeqVIl7969e5qbEdM79NBD/dZbb43P9+jRw/Ply+czZ850d/clS5Y44G+//XY8T+/evb1UqVJepkwZP/PMM33QoEGeL18+37Jli8+bN8+JjEGcmS1btniRIkUy3N/o+MSTJk3yhg0berFixbxNmzZpxpj+8ssvMz2msXzJycl+yy23+CGHHOJJSUl+4oknZnpTpIiIyAEkz2PR2GQeBFjyz6QXV0RERA4WB8xg/QfiKBYiIiIiInlm178qk3+SA+abmIiIiMjBQi3IIiIiIiIRCpBFRERERCIUIIuIiIiIRChAFhERERGJUIAsIiIiIhKhAFlEREREJEIBsoiIiIhIxP8DyiVHXZMA79IAAAAASUVORK5CYII=\n", "text/plain": [ "<Figure size 720x432 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Define figure\n", "fig,ax = plt.subplots(figsize = (10,6))\n", "\n", "# add title to plot\n", "title = 'Profit Margin for top five spend categories'\n", "plt.text(s=title, # the text to be displayed\n", " x = 0,y = 0.91, # the position of the text (x, y)\n", " fontname = 'Times New Roman', # the font to be used for the text\n", " fontweight = \"bold\", # the weight of the font (e.g. bold)\n", " fontsize = 22, # the size of the font\n", " ha='left', # horizontal alignment of the text ('left', 'center', 'right')\n", " transform = fig.transFigure # the coordinate system to use for positioning the text\n", ")\n", "\n", "# add subtitle to plot\n", "subtitle = 'Consumers are willing to pay higher prices for decorative items for their home.'\n", "plt.text(s=subtitle, # the text to be displayed\n", " x = 0, y = 0.85, # the position of the text (x, y)\n", " fontname = 'Times New Roman', # the font to be used for the text\n", " fontsize = 18, # the size of the font\n", " ha = 'left', # horizontal alignment of the text ('left', 'center', 'right')\n", " transform = fig.transFigure # the coordinate system to use for positioning the text\n", ")\n", "\n", "# Create bar plot\n", "bars = plt.barh(df['Spend_Category'], \n", " df['Profit_Margin'], \n", " color = ['lightgray', 'lightgray', 'lightgray', 'lightgray', \"black\"], # color for bars\n", " edgecolor='none')\n", "\n", "# add margin\n", "plt.margins(y=0.14)\n", "\n", "# remove plot borders\n", "ax.spines['top'].set_visible(False)\n", "ax.spines['right'].set_visible(False)\n", "ax.spines['bottom'].set_visible(False)\n", "ax.spines['left'].set_visible(False)\n", "\n", "\n", "# remove xlabels\n", "ax.set_xticklabels([])\n", "ax.set_xticks([])\n", "\n", "# position and format ylabels\n", "ax.tick_params(axis='y', left=False)\n", "plt.yticks(fontsize=14, fontweight='bold')\n", "\n", "plt.bar_label(\n", " bars, # the bars object to add labels to\n", " labels=[f'{x:.0%}' for x in bars.datavalues], # the list of labels to display on each bar\n", " padding=12, # padding between the bar and the label\n", " fontsize=15 # font size of the labels\n", ")\n", "\n", "# add line\n", "ax.plot(\n", " [-0.025, .94], # X-coordinates of the ends of the line\n", " [.8335, .8335], # Y-coordinates of the ends of the line\n", " transform = fig.transFigure, # Coordinate system for the line\n", " clip_on = False, # Whether to clip the line to the axes bounds\n", " color = 'tab:blue', # Color of the line\n", " linewidth = 3 # Width of the line\n", ")\n", "\n", "\n", "# add rectangle\n", "ax.add_patch(\n", " plt.Rectangle(\n", " (-0.03,.95), # (x, y) location of the bottom-left corner of the rectangle\n", " 0.015, # width of the rectangle\n", " -0.12, # height of the rectangle\n", " facecolor = 'tab:blue', # fill color of the rectangle\n", " transform = fig.transFigure, # coordinate system used for the rectangle\n", " clip_on = False, # whether the rectangle is drawn outside the plot area\n", " linewidth = 0 # width of the edge line of the rectangle\n", " )\n", ")\n", "\n", "# add footnote\n", "footnote = \"*Data from Jan-2022 to Mar-2023\"\n", "plt.text(s = footnote,\n", " x = 0,\n", " y = 0.13,\n", " fontname = 'Arial',\n", " fontstyle = 'italic',\n", " fontsize = 15,\n", " ha = 'left',\n", " transform = fig.transFigure\n", ");" ] } ], "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.12" } }, "nbformat": 4, "nbformat_minor": 5 }