{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Päivitetty 2023-12-10 / Aki Taanila\n" ] } ], "source": [ "from datetime import datetime\n", "print(f'Päivitetty {datetime.now().date()} / Aki Taanila')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Dataframe matplotlib-grafiikaksi - perusasiat\n", "\n", "* Jos käytän pandas-kirjastoa, niin voin tehdä kaavion suoraan dataframesta plot-funktiolla. Käytettävissä on monia kaavioon vaikuttavia parametreja: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html\n", "* Kaavion luonnin jälkeen voin muotoilla ja täydentää kaaviota **matplotlib.pyplot**-paketin komennoilla. Lue lisää https://matplotlib.org/stable/tutorials/pyplot.html ja https://matplotlib.org/stable/api/pyplot_summary.html\n", "* Joissain tapauksissa tarvitaan kaavion luonnin palauttamaa **Axes**-luokan oliota kaavion muotoiluun. Lue lisää https://matplotlib.org/stable/api/axes_api.html\n", "\n", "**Seaborn** on matplotlibin päälle rakennettu paketti, joka tekee monista vaikeista asioista helppoja. Tässä muistiossa en käytä sitä muuuhun kuin grafiikan tyylimäärittelyyn." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "# Grafiikan tyylimäärittely, joka sisältää taustaviivoitukset (grid)\n", "# Muita tyylivaihtoehtoja ovat 'darkgrid', 'dark', 'white' ja 'ticks'\n", "sns.set_style('whitegrid')" ] }, { "cell_type": "code", "execution_count": 3, "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", "
Myynti 2017
Helsinki1321847
Turku852669
Tampere1032199
Oulu568230
\n", "
" ], "text/plain": [ " Myynti 2017\n", "Helsinki 1321847\n", "Turku 852669\n", "Tampere 1032199\n", "Oulu 568230" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1 = pd.DataFrame({'Myynti 2017':[1321847, 852669, 1032199, 568230]},\n", " index=['Helsinki', 'Turku', 'Tampere', 'Oulu'])\n", "df1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dataframesta kaavioksi\n", "\n", "* `df.plot()` luo oletuksena viivakaavion\n", "* **kind**-parametrilla voin määrittää tehtäväksi muun kuin viivakaavion" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkMAAAGrCAYAAADDxpPpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAoNElEQVR4nO3de3QUZZ7G8ae7kwwBRkEJBBEcCbcJRhIIBsRrAB2BcEnQo44Rjg6IguRE2AFxl4U4DGF2BUd0WQUdllHRYwwCskkOKqg7gcBwkRgERZGby0VkuCSBdLpr/3DTGENCNyRdnbzfzzk5h6737apf/YDKc6qqqx2WZVkCAAAwlNPuAgAAAOxEGAIAAEYjDAEAAKMRhgAAgNEIQwAAwGiEIQAAYDTCEAAAMBphCAAAGC3M7gIaA6/Xq8rKSjmdTjkcDrvLAQAAfrAsS16vV2FhYXI6az//QxjyQ2VlpYqLi+0uAwAAXIK4uDhFRETUOk4Y8kNVmoyNja2zmSbyeDwqLi5WXFycXC6X3eWEHPpTO3pTN/pTO3pTN/pzXlUv6jorJBGG/FJ1aczlchn/D6s29KZu9Kd29KZu9Kd29KZu9Oe8i93iwg3UAADAaIQhAABgNC6TAQCaHK/Xq4qKCrvLsIXH45EknT17tslfJgsPD6+XfSQMAQCalIqKCu3du1der9fuUmxhWZbCwsK0b98+Ix4H06pVK0VHR1/WvhKGAABNhmVZ+t///V+5XC517Njxop8iaoosy1J5ebkiIyObdBiyLEtlZWU6evSoJKl9+/aXvC7CEACgyaisrFRZWZmuueYaNW/e3O5ybFH1oMFmzZo16TAkSZGRkZKko0ePqm3btpd8ycy8yAwAaLKq7pfhmXDmqAq9brf7ktdBGAIANDlN/YwIzquPv2vCEAAAMBphCADQ5Hm8VpPeXn3Zt2+f3SXYghuoAQBNnsvpUMZb27Tn6JkG31aXti315/sTAnpP9+7dJUl5eXnq3LlztbG//OUvys7O1qRJk/Tkk0/WW50/N2/ePJ04cULZ2dmSpISEBC1evFiJiYk15h48eFDZ2dn6+9//Lsuy1KdPHz399NPq2LGjJGnv3r2aNWuWduzYoRYtWuihhx7ShAkTaqynoKBAf/rTn/Thhx/6liUkVO+d1+vV2bNn9dxzz2nYsGH1ucs+hCEAgBH2HD2jku9O2V1GrVq3bq0VK1ZoypQp1Zbn5uaqZcuWDb79EydOVHu9bdu2WudOnDhRN9xwgz766CNZlqU5c+boiSee0OrVq+V2uzVhwgQNHjxYixcv1p49e/TYY4/puuuu0z333CPpx5udly5dqueff17t2rWrc7u///3vdfz4cf3mN7+ppz2tictkAACEgJSUFK1cubLawyJ37NihiooKxcbGSpKOHDmi2NhYbd261Tfn+++/V8+ePbVly5Zax/bv36/p06dr5syZmjBhghISEjRw4EAtW7ZMkvTSSy9p9erVWr16tYYPHy7px7NVRUVFNeo8efKk2rRpo4yMDDVv3lwtWrTQww8/rC+//FInT57U5s2bdfToUU2ePFkRERGKjY1Venq63njjDd86HnnkERUVFWncuHF19iQ3N1eFhYX693//d4WFNdz5G8IQAAAh4I477pDb7VZhYaFvWU5OjkaPHu173a5dOw0YMEArV670LVu1apUSEhLUp08fDRgwQKtWraox1qlTJ0k/hov09HRt3rxZ48aNU3Z2to4cOaKJEycqJSVFKSkp1d5/IVdeeaVeffVVtW3b1resoKBAHTp00JVXXqmvvvpK119/fbXHG3Tp0kW7du3yvf63f/s3LVmyxFfXhZw+fVrz5s3TjBkz1Lp16zprulyEIQAAQkBYWJhSUlK0YsUKST9+t1hBQYFGjhxZbV5aWpry8/N93722YsUKpaWl+cby8vJ8z9z56ZgkJSUlacCAAQoLC1NaWpo8Ho/2799/WXUvX75cr732mv7whz9IkkpLS30PQ6wSGRmpsrIy3+vo6OiLrnfZsmXq0KGD79JaQyIMAQAQIlJTU/XBBx/ozJkzys/PV+/evRUVFVVtTnJysiTp448/VklJiQ4dOqS7777bN+ZwOPTpp5/WGJNUbV3h4eGSdMnf4VZRUaHZs2fr+eef18svv6ybb75Z0o8PQSwvL682t7y8XC1atPB73ZZlKScnR+np6UF5ZhQ3UAMAECJ69Oihzp07Ky8vT6tXr9aYMWNqzImIiFBKSorWrFmja665Rvfcc4/vKcxVYwUFBerUqVO1sfr0ww8/6PHHH1dFRYVycnJ8nyKTpK5du+rbb79VZWWl7z6fPXv2qGvXrn6vv7i4uMFvmv4pzgwBABBCUlNTtXTpUu3du1e33377BeeMHj1an376qdauXavU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oxGGAACA0QhDuGyRkZF2lxDS6E/t6E3d6E/t6A3qU5jdBTQmLpfL7hJCjsvlUmxsrN1lhCz6Uzt6Uzf6U7tL6Y3Ha8nldDRQRWjsCEMBmPbuZ/ricKndZQAAAtClbUv9+f4Eu8tACCMMBeCbY6Uq+e6U3WUAAIB6xD1DAADAaIQhAABgNMIQAAAwGmEIAAAYjTAEAACMRhgCAABGIwwBAACjEYYAAIDRCEMAAMBohCEAAGA0whAAADAaYQgAABiNMAQAAIxGGAIAAEYjDAEAAKMRhgAAgNHC/J04c+ZMrV69WpJUWVkpt9utyMhI3/jixYuVmJhY/xUCAAA0IL/DUFZWlrKysiRJubm5evHFF/XRRx81WGEAAADB4HcYqstHH32kV155Rfv27VNZWZni4uL0hz/8Qb/61a+Um5urnJwc9erVS++++66cTqcmTpyoX/ziF1q0aJFOnTqloUOH+oJWcnKyUlNTtXr1ah09elSxsbGaPXu2unTpIkkqKSlRdna2du3apdatW+vBBx/UmDFj5HA4tHDhQm3btk0nT57UgQMH9NJLL+nXv/615s+frw8//FAVFRXq16+fnnnmGbVp06Y+dh0AADRyl33P0OHDh5WRkaHx48drw4YNWr9+vSzL0ksvveSbs2XLFrVr104bN27U5MmTNXfuXBUVFem///u/tXTpUuXk5Gjz5s2++W+//baef/55bdiwQTExMZowYYLcbreOHDmiMWPG6De/+Y0KCwv1H//xH3rzzTf19ttv+967YcMGTZ06VevWrVNCQoJmzJihffv2KTc3Vx988IFatmypSZMmybKsy911AEAj4vF4jPkxbX8v1ouLuewzQ1dddZXWrFmjTp066cyZMzp8+LBat26tI0eO+OY0b97cd/bmlltukcfj0aOPPqrIyEjFxcWpbdu2OnTokPr27StJevTRR/XrX/9akvT0008rMTFRW7du1Y4dOxQTE6Pf/va3kqQuXbro0Ucf1euvv677779fktSxY0f1799fknT8+HEVFBQoLy9PV199tSRpxowZSkxMVElJiW644YbL3X0AQCOxe/dulZeX211G0BQXF9tdQqNx2WEoPDxc77//vt566y05HA5169ZNZ86cUVjY+VW3atVKDodDkuR0/ngy6oorrvCNO51Oeb1e3+vrrrvO9+fIyEi1atVKx44d06FD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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df1.plot(kind='barh') # Myynnit vaakapylväskaaviona\n", "# Kaaviossa on 'whitegrid'-tyylin tuoma taustaviivoitus; vaakaviivoitus on tässä tarpeeton\n", "# 1e6 kertoo asteikon lukujen olevan miljoonia\n", "# Selitteen (Myynti 2017) voisin käyttää otsikkoa" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkMAAAHBCAYAAABqqb/VAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAwZklEQVR4nO3deVhU5d/H8Q8MIKiZmrikZoWJoSQoiqZlouWCe1amEWZX6S9Ns/ylpY+5Fvb7pSWZS5ZLaZKGW4ZbRvaEomaYaWUuue+aC0rAzHn+8GFyQhBcGOR+v66L63LOuefM93zTw6dz3zPjYVmWJQAAAEN5ursAAAAAdyIMAQAAoxGGAACA0QhDAADAaIQhAABgNMIQAAAwGmEIAAAYjTAEAACMRhgCUKjxubAAbjTCEFBEREVFKTAwUF27ds1xzIABAxQYGKjBgwcXYGV5FxUVpaioKOfjefPmaezYsW6sqPDZt2+fXnrpJTVp0kT16tVT165dtXbt2mzjpk+frhYtWig4OFgdOnTQqlWrcjzmoUOHFBYWpuTkZJftgYGBOf5c+t8JuNl5ubsAANePp6enUlJSdOjQIVWqVMll34ULF5SYmOiewvLojTfecHk8adIkNWjQwE3VFD5//vmnnnrqKZUqVUqvv/66SpYsqfnz56tnz56aOXOms1fTpk3TuHHj1KdPH9WuXVtffPGF+vXrp5kzZ6p+/fouxzxw4ICeffZZnT17NtvrxcXFZdu2YsUKffTRR7mGbuBmQxgCipCgoCDt2LFDy5Yt0zPPPOOyb/Xq1SpWrJhuueUWN1V3ZdWrV3d3CYXaggULdOLECX3++eeqUKGCJKlJkybq0KGDPvroIzVo0EBpaWmaMmWKevTooT59+kiSHnzwQXXt2lUTJ07UjBkzJEkOh0MLFizQ22+/nePrhYSEuDw+ePCgPv/8c3Xv3l2RkZE35BwBd2CaDChCihcvrqZNmyohISHbvq+++kqtWrWSl9ff/w/Ur18/NW3aVA6Hw2XssGHD1Lx5cyUmJiowMFD/+7//67I/JSVFgYGBWr9+vZKTkxUYGKi1a9eqZ8+eqlOnju6//36NHTtWmZmZzucEBgZq9uzZGjJkiBo0aKDQ0FD169dPx48fd465dJosIiJCBw4c0IIFCxQYGKj9+/dnO6fJkyerVq1aOnnypMv2OXPmKCgoSMeOHVN8fPxlnx8REeEyXfjXX39p4sSJatWqlYKDg/XII49o6tSpLr2JiorSkCFDNHXqVD300EMKDg5W165dtXnzZueY2NhYPfzww0pMTFS7du1Uu3ZttWzZUgsWLHB5/V9//VV9+/ZVw4YNVatWLT3wwAMaPXq00tLSsp1nlgoVKqhHjx7OICRdvBt4xx13aO/evZKkzZs368yZM3rkkUecYzw8PPTwww9r/fr1zuP/9ttvGj58uDp27JhrILpUTEyMfH199fLLL+dpPHCzIAwBRUybNm20efNmHTx40Lnt3LlzWrNmjdq2besytkuXLjp8+LDLWpH09HQlJCSoU6dOeuCBB1ShQgUtWrTI5XkLFixQ1apVXaZcBg4cqHr16mny5Mlq166dPv74Y82fP9/leePHj5fD4dC4ceP06quvKjExUW+++eZlz+P999+Xv7+/mjZtqri4OJUvXz7bmPbt28tut2vFihUu27/88ks1atRI/v7+V+jWRZZlqXfv3po2bZq6dOmiyZMnq1WrVnr33XezTd0tX75cX3/9tYYOHapx48bp+PHj6tevn+x2u3PMsWPHNHLkSD399NOaOnWqqlSposGDB2vnzp2SpKNHj6p79+66cOGCYmJi9OGHH6p169b65JNPnHduLqdNmzYaOHCgy7Y///xT69ev1z333CNJzte48847XcZVq1ZNdrvdGZoqVaqklStX6rXXXpOvr+8Ve7Rp0yYtX75cL7/8skqWLHnF8cDNhGkyoIh56KGHVLx4cS1btkw9e/aUJK1cuVJly5ZVvXr1XMY2adJEFStW1MKFC9WoUSNJ0qpVq3T27Fl16tRJNptNHTt21CeffKLU1FSVKFHCGZaio6Pl4eHhPNZjjz3mnJZp1KiRVq1apcTERJe1JTVq1NBbb73lfPzTTz9p2bJllz2PoKAg+fj4qGzZstmma7Lcfvvtql+/vpYuXep8nYMHD2rTpk15vtshSWvWrFFSUpL+85//qH379pKkxo0by9fXV++9956io6OdU3iZmZn66KOPnIEgNTVVgwYN0i+//KLatWtLurg+a8yYMc6e3nnnnWrWrJm+/fZbBQQEaPv27br33nv13nvvOY9z//33a+3atdqwYYN69+6dp7rtdruGDBmi8+fP67nnnpMk59qffwaWEiVKSLoYjCWpdOnSee6PJH300UeqXLmy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AMBohCEA1yQwMFCBgYHatWtXtn3Tp09XYGCgYmNjJUnDhg3TsGHDJEmxsbGKioqSJC1evFiRkZEFVzQAXIJvawNwzcqUKaMFCxbolVdecdkeHx+vkiVLOh+PHDnyss9v37692rdvf0NrBICccGcIwDVr166dFi1aJIfD4dz2008/KT09XUFBQc5tgwcP1uDBg7M9Pz4+XhEREc7HGzduVPfu3RUWFqaIiAi9++67Ll9UOm/ePEVGRqpu3bpq166dFi9e7NwXFRWld955R927d1doaKhat26tr776yrl/06ZNevrpp9WkSRMFBwerc+fOSklJce6fP3++OnfurPDwcIWGhqpXr146efLkZc/bsizNmjVLLVu2VFhYmLp166aff/7ZuT8iIkLx8fHOx8nJyQoMDJQk7d+/X4GBgYqJiVH9+vU1YsSIK57bkSNH9NJLLykiIkJ16tRR8+bNNX/+/MvWBiDvCEMArtlDDz2kjIwMJSUlObfNnz9fXbp0yfexdu3apWeeeUaPPPKIkpKSNH36dK1evVpvv/22pIvBKSYmRkOHDtWGDRv0+uuva8SIEVq5cqXzGJ9//rmGDBmi5ORkPfLIIxo2bJj++usvpaWl6V//+pdatmypNWvWKDk5WXfccYfz2D/99JNGjx6t4cOHKzk5WQkJCfrjjz80a9asy9Y6Z84cTZ8+Xe+9957Wrl2rzp0765lnnnH5JvorSU1N1ffff68BAwZc8dyGDh0qb29vLV26VJs2bdJTTz2lUaNGKTU1Nd99BvA3whCAa+bl5aV27dppwYIFkqS0tDQtX75cHTt2zPexlixZosDAQEVHR8vHx0fVqlXTK6+8onnz5snhcOiLL77QE088oUaNGslms6lRo0Z64oknNHfuXOcxWrZsqaCgIPn4+KhTp046e/asTpw4IW9vb8XFxalbt25KT0/XgQMHVLp0aR05ckSSVKNGDX355Ze67777dPr0aR09elRly5Z17v+n2bNnq1evXqpZs6a8vb3VpUsXBQQEuNzNuZKOHTvKx8dHpUqVuuK5jR49Wm+88Ya8vb118OBBlShRQmlpaTp9+nS++wzgb6wZAnBddO7cWU888YTOnTunVatWqW7duvL398/3cU6cOKGqVau6bKtSpYrS0tJ04sQJHT9+/LL7V69e7Xx86et6eV28zDkcDtlsNiUnJ+u5557T+fPnVb16dXl5eSnr+6o9PT01a9YsLVmyRMWLF1dgYKDOnTunnL7P+sCBAxo7dqz++9//OrdlZmaqdu3aeT7f8uXLO/98pXPbt2+f3n77bf3xxx+68847Va1aNee5Abh6hCEA10XNmjV19913KyEhQUuWLFF0dPRVHady5cpasWKFy7a9e/fKx8dHt956q6pUqaK9e/e67N+3b1+egtfmzZs1atQozZ071xlYPv74Y+3evVuSNGPGDH3//fdasmSJypUrJ0nq3bt3jserWLGi+vXr5/JOuL1796p06dKSLoarjIwM575Tp05lO4aHh4fzz7mdW0ZGhnr16qWXX35Z3bp1k4eHh37++ed83YUCcHlMkwG4bjp37qwZM2Zo9+7datq06VUdIzIyUjt37tTMmTOVnp6uvXv3aty4cWrXrp18fHzUpUsXxcXFae3atbLb7Vq3bp3i4uL06KOPXvHYZ8+elaenp3x9fSVJKSkpmjVrlnNx9rlz5+Tl5SVvb29lZmZq0aJF+u6771wCzaUef/xxTZo0STt37pQkfffdd4qMjNSGDRskSQEBAfr666+VlpamY8eO5bj2KEtu55aRkaG0tDT5+vrKw8NDBw8e1H/+8x9JyrE+AHnDnSEA103btm01duxYRUdHO6en8qtKlSqaNm2axo0bp9jYWPn6+qpt27Z66aWXJEmtW7fWuXPnNHr0aB08eFAVKlTQq6++mqf1SY0bN1a3bt3UvXt3ORwOValSxfnus+PHj6tnz57avn27mjVrpmLFiikoKEjdunXTunXrLnu8Hj16yLIsvfDCCzp69KgqVKigYcOGqXnz5pKkgQMHavjw4WrcuLHKly+v6Oho/fDDDznWd6Vze/PNN/Xee+9p9OjRuu222/T4449rx44d2r59u+6666589RnA3zysnCbDAaCAzJ8/X5MnT9aqVavcXQoAAzFNBsCtLly4oB07djjX6ABAQWOaDIBbPfPMM9q7d2+On04NADca02QAAMBoTJMBAACjEYYAAIDRCEMAAMBohCEAAGA0whAAADAaYQgAABiNMAQAAIxGGAIAAEYjDAEAAKP9H7zdtDsomkeIAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Selite (legend) piiloon ja pylväiden paksuuden määritys (width)\n", "(df1/1000000).plot(kind='barh', legend=False, width=0.7)\n", "\n", "plt.title('Myynnit vuonna 2017') # Otsikko\n", "plt.xlabel('Miljoonaa euroa') # Otsikko x-akselille\n", "plt.grid(axis='y') # Poistan vaakasuuntaisen taustaviivoituksen" ] }, { "cell_type": "code", "execution_count": 6, "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", "
Myynti 2017Myynti 2016
Helsinki13218471203434
Turku852669923450
Tampere10321991023563
Oulu568230542399
\n", "
" ], "text/plain": [ " Myynti 2017 Myynti 2016\n", "Helsinki 1321847 1203434\n", "Turku 852669 923450\n", "Tampere 1032199 1023563\n", "Oulu 568230 542399" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = pd.DataFrame({'Myynti 2017':[1321847, 852669, 1032199, 568230],\n", " 'Myynti 2016':[1203434, 923450, 1023563, 542399]},\n", " index=['Helsinki', 'Turku', 'Tampere', 'Oulu'])\n", "df2" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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R4/WqVOndM0112jhwoW6/vrrL7VsAABwGTAUZN5//32X26Wlpdq8ebPhYBEaGqp58+adc1lGRsb/Ly4gQKNHj9bo0aMNrR8AANQMhoLMn8OHxWJRZGSknnnmmWotCgAAoCoMBZlPPvnEXXUAAAAYZugSBdKZbyqlpKRoxowZys/P15YtW9xRFwAAwAUZCjJ79uzR7bffro8++kjvvvuu8vLylJycrPfee89d9QEAAFTKUJCZOXOmJk6cqJUrVyogIEARERFauHChXnvtNXfVBwAAUClDQWbv3r3Ok9+dPcNvp06dDH/9GgAAoDoYCjJXX321fvrpJ5e2n376yXmGXgAAAE8yFGTuuecejRw5Uu+8847Kysq0fv16JScna/Dgwe6qDwAAoFKGvn593333yWKx6I033lB5ebnmzZunQYMGafjw4W4qDwAAoHKGL1EwdOhQDR061B21AAAAGGL4PDIAAAC+giADAABMiyADAABMiyADAABMy9DBvnl5eXrzzTeVk5Oj8vJySVJpaan27t2r1NRUtxQIAABQGUNBZtKkSTp48KCuvvpqFRQUqFGjRvrf//1fvsUEAAC8wlCQSU9P1/r165WTk6NXXnlFCxYs0Lp16/TBBx+4qz4AAIBKGTpGJiAgQA0bNlSzZs2UmZkpSbrrrrv0/fffu6U4AACA8zEUZJo0aaLvvvtOISEhKigo0MmTJ1VYWKji4mJ31QcAAFApQ7uW7rnnHg0bNkwffvihevXqpYSEBAUEBKht27buqg8AAKBShoLMgAED1LJlS4WGhmr8+PFaunSpCgoKNGLECHfVBwAAUCnD11q66aabnL8//PDDkqSTJ09WX0UAAABVZCjIfPPNN5ozZ06F88icPHlS3333nVsKBAAAqIyhg32fffZZhYWF6dZbb9W1116re++9VxaLRY8//ri76gMAAKiUoSCzb98+zZw5U0OHDpXdbtf999+vuXPnKi0tzV31AQAAVMpQkAkJCVHt2rUVERGhffv2SZJuueUWHT161C3FAQAAnI+hINO8eXOtWLFCV1xxhYKCgvTDDz9o//798vPzc1d9AAAAlTJ0sG9ycrIeeeQRdezYUQ888IAGDRoki8Wiv//97+6qDwAAoFKGgkybNm30+eefKzAwUIMHD9b111+v33//XR07dnRXfQAAAJUyfB4ZPz8/HTt2TOXl5QoNDVVoaKiys7PVuHFjd9QHAABQKUNBZsOGDZo8ebLy8/OdbQ6HQ35+fvrhhx+qvTgAAIDzMRRk5s+fr6FDh+ruu+9WQIDhjTkAAADVylAa+eWXX5SUlESIAQAAPsHQ169vuOEGZWVluasWAAAAQwx/a2n48OG6/fbbFRoa6rIsKSmpWgsDAAC4EENBJiMjQy1atND+/fu1f/9+ZzsnxAMAAN5gKMi8+eab7qoDAADAMMNH7W7atEmrVq3S0aNHFRYWpgEDBig+Pt4dtQEAAJyXoYN909LSNHHiRLVs2VLDhg1T69atNWXKFL377rvuqg8AAKBShrbIvPrqq1qwYIHat2/vbOvcubOmTZumgQMHVntxAAAA52Noi0x2drbi4uJc2tq1a6dff/21WosCAACoCkNBJjw8XOnp6S5t6enpXGcJAAB4haFdSwkJCXr00Uc1ePBgRURE6PDhw1q1apUmTZrkrvoAAAAqZSjIDBw4UBaLRWvWrNGmTZvUpEkTPffcc7r99tsNDXrixAn985//1M6dO2WxWNS7d29NmDDhnJc+2Llzp+bMmaOsrCyFhITonnvu0ciRIw2NBwAALk+Gv37dr18/9evXTydOnNCVV155UdddGjt2rBo2bKitW7cqNzdXjzzyiFJSUvTggw+69Nu/f78efvhhPfPMM+rbt68yMzOVkJCga665xnB4AgAAlx9Dx8iUlJRoxowZstlsuvXWWxUTE6N//vOfKikpqfI6Dh06pJ07d2r8+PGyWq2KiIhQYmKili9fXqHv22+/re7du+vuu++Wn5+fWrVqpZUrVyomJsZI2QAA4DJlKMgsXrxYO3bs0EsvvaQPPvhAL730kr755hu99NJLVV7Hvn37VK9ePTVs2NDZFhkZqezsbJ0+fdql77fffqu//OUveuyxxxQXF6c77rhDO3fuVFhYmJGyAQDAZcrQfqG0tDQtXbpUERERks4EkMjISA0dOlRPPvlkldZRUFAgq9Xq0nb2dmFhoUJCQpztp06d0rJlyzR37lw9//zzysjI0MiRI3XllVca3rVkt9sN9a8uFovFK+P6Am89597EfNcszDfgPlV9jRkKMqdOnVKjRo1c2ho1aqTi4uIqryMoKEhFRUUubWdvBwcHu7TXqlVL3bt3V5cuXSRJbdu2VZ8+fbRhwwbDQWb37t2G+lcHq9Wq1q1be3xcX5GZmVlhri9nzDfzXZPUtPmG7zIUZKKiorRy5Urde++9zraVK1eqZcuWVV5HixYt9Ntvvyk3N1ehoaGSzhzUGx4errp167r0jYyMrHD8jd1ul8PhMFK2JCk6OrpGf3ryhqioKG+XAA9ivmsW5hvuZrfbq7QRwlCQGTt2rEaMGKHU1FTneWSysrL02muvVXkdzZo1U0xMjGbMmKFp06YpLy9PixYt0oABAyr0HTJkiB588EGtW7dOvXv31pdffqm0tDS98MILRsqWdGYTMEHGs3i+axbmu2ZhvuErDB3sGxsbq/fff18dO3ZUcHCwevTooQ8++EBt2rQxNOi8efNUVlam7t27a9CgQerUqZMSExMlSTabTampqZKkDh06aNGiRVq2bJliYmI0adIkTZgwQd27dzc0HgAAuDwZPglM8+bNlZycfEmDhoaGat68eedclpGR4XK7c+fO6ty58yWNBwAALk9VCjLx8fFKS0tTt27d5Ofnd84+FotF9evX10MPPaRu3bpVa5EAAADnUqUg8/DDD0uSkpKSKg0y5eXl2rdvnyZPnkyQAQAAHlHlLTLSmcsTnE9xcbG++eabS68KAACgCqoUZIYNG1bplpizli1bptq1a2vFihXVUhgAAL7EXu6Qxf/874WX49i+rkpBJi4uzt11AADg0yz+fkpemaGsY/keHfe6BnX030NsHh3TTKoUZJKSktxdBwAAPi/rWL72ZJ++cEd4TJWCzJQpUzRlyhRNmjSp0j4zZ86stqIAAACqokonxDt7SYCLuTQAAACAu1Rpi8zUqVMlSbNmzXJrMQAAAEZUKcgsWLDggn04jgYAAHhalYNM3bp1df31159z99KFvpoNAAAuTlidK6Ryu+TvpQt1enPsKqhSkJkwYYLWrFmjY8eOaeDAgerbt6/q16/v7toAAKjxQqwBZ4LEew9KuXs9O3hoS6n/Es+OaVCVgsz999+v+++/X99++63ee+899erVS23atNHAgQP1t7/9Tf7+hi6iDQAAjMrdK/3C2fP/zFACuemmmzR16lRt2bJFPXr00NKlS9W1a1e9+OKL7qoPAACgUhe1KaV27drq0aOHevXqpbp16yolJaWaywIAALiwKu1a+qNt27bpvffe0yeffKJrr71WQ4YMUa9evdxRGwAAwHlVKcgcPHhQa9eu1bp161RaWqpevXpp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cS1btszdD6HG+/333+Xv76/atWvL4XDo888/1/vvv+/y5mPU0qVLdejQIRUVFWnmzJlq3ry5bDab4uPjtWvXLqWmpqqsrEzHjh3TqFGjNGvWrHOup2HDhurSpYumT5+uvLw8lZaWavHixRowYIBOnz590fXh3AIDAzVz5ky99dZbmjt3rnJyclReXq6srCwlJSXp119/1aRJkxQZGanc3Fx98cUXcjgcWrdunfbv33/OdUZGRiozM1P79u1TWVmZlixZosLCQg8/Mu8hyPiwOnXqKCUlRTt27NDf/vY33XbbbfL399fixYsr9L3vvvvUpUsXDRkyRLfccovmzJmjuXPnKjw8/KLHv/rqqzV58mTNmzdPP/7446U8FFyCWrVq6dlnn9WGDRvUpk0bzZo1q8JugPPp0KGDBg4cqAkTJqiwsFBPPPGECgoK1LFjR913333V8tV8nN/dd9+tv/71r7rrrrvUvn17LV68WAkJCTpw4MA5v4VYFTExMXr00UfVsWNHHT9+XK+88or8/f3VpEkTLVmyRKtWrdJf//pX9enTR82bN680yEjS888/r5CQEPXt21ft27fXZ599piVLlrhsoUH16dSpk1auXKnDhw+rf//+atOmjUaNGqWmTZsqNTVVjRo1UnR0tB555BFNnDhR7dq10xdffKGePXuec3233Xab4uPjNXz4cHXq1El5eXmKiYnx8KPyHq5+DQAm061bNyUlJalfv37eLgXwOrbIAAAA0yLIAAAA02LXEgAAMC22yAAAANMiyAAAANMiyAAAANMiyAAAANMiyAAAANMiyAAAANMiyAAAANMiyAAAANMiyAAAANP6PwXY5E+A+P8GAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(df2/1000000).plot(kind='bar', rot=0) # Luokka-akselin nimiöiden asento (rot=0)\n", "\n", "plt.ylabel('Miljoonaa euroa') # y-akselin otsikko\n", "plt.grid(axis='x') # Poistan pystysuuntaisen taustaviivoituksen\n", "plt.legend(ncol=2) # Selitteeseen kaksi selitettä vierekkäin" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHBCAYAAABzIlFzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJwElEQVR4nO3dd1yV9f//8SccQIaaAxU1NCfmSsQZTswciZJi9kkNt+a2tNQ+H3OPbJgjy1w5MpIwcaDmtjRFsxzlwNyWC9NYgcDvD3+crydAz1HWRY/77eYtz/t6n+t6Xecdnifva9mlpKSkCAAAwIDsc7oAAACAR0WQAQAAhkWQAQAAhkWQAQAAhkWQAQAAhkWQAQAAhkWQAQAAhkWQAQAAhkWQAQyOe1oC+DcjyAAP0L17d3l5eenll1/OsM+IESPk5eWl0aNHZ2Nl96xevVozZswwvw4NDZWXl5cuXbqU7bU8iu7du6t79+7Zsq2UlBQFBwfL399f3t7eatGihaZMmaLo6GiLfr/99pv69esnHx8f1a9fX2PHjtWdO3cyXO+0adMy3IfQ0FD5+/urRo0a8vPz09y5c5WUlJThuvbv3y8vLy/t37//0XbyH+vq1q2b6tatK19fXw0ePFjnz5+36BMdHa1x48bJ19dXtWrVUs+ePRUZGZnhOrdt2yYvL690a87oz9y5cx97X4AHccjpAoDczt7eXj/99JN+//13lSxZ0mJZXFycdu7cmTOFSZo/f77q1atnft2sWTMFBwerePHiOVaTLd55551s29bChQv14Ycfqnfv3mrYsKHOnz+vjz76SKdPn9aSJUtkZ2enO3fuqEePHipevLjeffdd3bx5UzNnztQff/yhxYsXp1nnggULtHTpUosxSLVy5UpNnDhRvXr10tixY/XTTz9p3rx5SkhI0Ouvv55ujdWqVVNwcLAqVqz4WPt6+PBh9erVS35+fnrvvfcUFxen+fPn65VXXtG6detUpEgRSdIbb7yhI0eOaNSoUcqfP7/mzp2roKAgbdiwQYUKFbJY5759+zRy5MgMa/6nWbNm6ejRo3rhhRcea1+AhyHIAA9RtWpVRUZGatOmTerZs6fFsu3btytfvnwqUKBADlVnqUiRIuYvKSN43C9sayUnJ2vBggXq0qWL3njjDUnSs88+q0KFCmn48OE6duyYatSooVWrVunOnTv65ptvzJ9jiRIl1K9fPx08eFB16tSRJF28eFHTp0/Xjh070h372NhYvf/+++rdu7fefPNNSVLDhg11584d7d27N8Mgkz9/ftWqVeux9/fTTz9V+fLl9dFHH8ne/t7Ee+3atdWsWTOtWbNGvXv31uHDh7Vz504tWLBATZs2lSTVqVNHLVq00BdffKGBAwdKujdr8+mnn2rRokUqUKCAYmNjH1rz1q1btW/fPn300UcqV67cY+8P8CAcWgIewtXVVU2bNlV4eHiaZRs3blTr1q3l4PB/vxMMHTpUTZs2VXJyskXfcePGqUWLFtq5c6e8vLz03XffWSz/6aef5OXlpQMHDpin6/ft26devXrpmWee0bPPPqsZM2bo7t27kiQ/Pz9dvnxZa9asMR9OetihpV69eikgICBN+/Dhw82/OY8ePVp+fn4Wyy9duiQvLy+Fhoaa265du6YxY8aoadOmqlmzpgIDA7Vt2zaL9+3du1ddunSRt7e36tatq4EDB+q3334zL//noSUvLy+tXLlSb7/9turVqydvb28NHTpUN27cMPdJSkrSggUL1K5dO9WsWVO1atXSyy+/rH379qW7z9K9L+P27durXbt2Fu2pX7IXL16UJH333Xfy8fGxCIONGzeWm5ubdu/ebW6bNm2aLly4oM8//1xPP/10mu19//33iomJUbdu3Sza33rrLYWEhGRYZ3qHlrZu3apXXnlF3t7eql69ulq3bq0VK1ZkuA5JqlmzpoKCgswhRpKKFy+u/Pnz68KFC+Z9dXV1la+vr7lPkSJFVLduXYt9DQkJUUhIiMaNG5dmf9ITHx+vyZMnq1mzZmrduvVD+wOPiyADWKFt27b6+eefdeXKFXNbdHS0du/enebLMTAwUH/88YfFl1FCQoLCw8P14osvqnHjxipRooTWrl1r8b41a9bI09NTdevWNbeNHDlSPj4++uSTT+Tv76/Fixebvwjnzp2rYsWKqWnTplYfTurQoYN+/fVXizARExOjHTt2qEOHDlZ/Hjdu3FBgYKAOHDigESNGaM6cOSpdurQGDRqksLAwSffCwWuvvaZq1app/vz5mjx5svn8k3+GvPt9+OGHSk5O1gcffKA333xTO3fu1NSpU83L33vvPc2bN09dunTRwoULNXHiRN26dUvDhg1LM1uQqmDBgvrf//4nHx8fi/YtW7ZIkipVqiRJ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LczpKvAvQ5ABAOleiPn955yuAoCNOLQEAAAMK0eCzIkTJ9SzZ0/Vq1dPvr6+evPNNxUVFZVu3127dsnf31+1atVSmzZttGPHjmyuFgAA5FbZHmTi4+PVp08feXt767vvvtP69ev1559/auzYsWn6njt3TkOGDNGwYcN08OBBDRkyRMOHD9fVq1ezu2wAAJALZXuQuXLliqpUqaJBgwbJyclJhQsXVpcuXRQREZGm75o1a1SnTh0999xzcnBwUNu2bVW3bl0FBwdnd9kAACAXyvaTfcuXL6+FCy3Pat+8ebOqVauWpm9kZKQqV65s0VaxYkWdOHHC5u0mJWXvJYEmkylbt5fXZff44d+Fn9fMxc8rMoO1/x/l6FVLKSkpmjVrlnbs2KEVK1akWR4TEyMXFxeLNmdnZ8XGxtq8raNHjz5ynbZycXFR1apVs217/wYnT55UXFxcTpeBPIif18zHzyuyU44FmejoaI0ZM0bHjx/XihUr5OXllaaPi4uL4uPjLdri4+Pl5uZm8/Zq1KjBb10Glt7/HwByJ35ekRmSkpKsmoTIkSBz4cIF9e3bV6VKlVJISIiKFCmSbr/KlSvr+PHjFm2RkZGqXr26zds0mUwEGQNj7ADj4OcV2SnbT/a9ffu2goKCVLt2bS1atCjDECNJ7du314EDB7Rx40bdvXtXGzdu1IEDB9ShQ4dsrBgAAORW2R5kQkNDdeXKFYWHh8vHx0fe3t7mP5Lk7e2tsLAwSVKFChU0b948ffrpp6pbt64+/vhjzZkzR+XKlcvusgEAQC6U7YeWevbsqZ49e2a4/PDhwxavGzdurMaNG2d1WQAAwIB4RAEAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggwAADAsggxgi+SknK4g7+CzBJAJHHK6AMBQ7E3S132kG6dyuhJjc68sdVqY01UAyAMIMoCtbpySfv85p6sAAIhDSwAAwMAIMgAAwLAIMgAAwLAIMgAAwLAIMgAAwLAIMgAAwLAIMgAAwLAIMgAAwLAIMgAAwLAIMgAAwLAI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jF3exLjmTYxr3pRbx9WqINOmTRsVLlxY/v7+atasmRwcHHTnzh1FRESY+9StWzfTi2vfvr2WLFmijRs36vnnn9eWLVt04MABvf3225m+LQAAYDxWBZmUlBRFRUXp888/1+eff55muZ2dnX799ddMKcjb21sTJkxQ+/btVaFCBc2bN0/vvfee3n77bZUuXVpz5sxRuXLlMmVbAADA2KwKMo9ylZC1Tp48afH68OHDFq8bN26sxo0bZ9n2AQCAcdl2AxgAAIBchCADAAAMiyADAAAMiyADAAAMiyADAAAMiyADAAAMiyADAAAMiyADAAAMiyADAAAMiyADAAAMiyADAAAMiyADAAAMiyADAAAMiyADAAAMyyGnCwAMx71yTldgfHyGADIJQQawQUpykuw6LczpMvKElOQk2dmbcroMAAZHkAFsYGdv0szNJ3QxKjanSzE0zyKuGtWqSk6XASAPIMgANtp58rqOX7mT02UYWrVSBQkyADIFJ/sCAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDIsgAAADDcsjpAgAAyDLulXO6AuPL5Z8hQQYAkCelJCfJrtPCnC4jT0hJTpKdvSmny0gXQQYAkCfZ2Zs0c/MJXYyKzelSDM2ziKtGtaqS02VkiCADAMizdp68ruNX7uR0GYZWrVTBXB1kONkXAAAYFkEGAAAYVo4EmZs3b2rgwIGqU6eO6tevrylTpuju3bvp9u3Tp49q1Kghb29v85/du3dnc8UAACA3ypFzZIYPH64SJUpoz549unHjhl577TUtXbpUffr0SdP32LFjWrRokerVq5cDlQIAgNws22dkzp8/rwMHDmjUqFFycXGRp6enBg4cqJUrV6bpe/HiRd2+fVtVq1bN7jIBAIABZPuMzOnTp1WoUCGVKFHC3FahQgVduXJFd+7cUcGCBc3tR48elZubm0aMGKGjR4/K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ly5dMrfdPzsWGhqqjh07qlevXqpTp47WrVtn8f5ffvlFDRo00NKlSyWlne3bv3+/vLy8sn5H/kW2b9+ul19+WQ0bNtQzzzyjbt266dy5c5Lujdcrr7yiGTNmqF69emrQoIGWL1+ur776Ss2bN5ePj4/F7Kafn5/mzp2rVq1aydvbW127dlVkZKR5+fHjx9W9e3fVrVtXzz//vJYuXWp+2N6cOXPUq1cvderUSfXq1VNERISio6M1ceJENW3aVA0bNtSIESN048aNbP188pqEhAT997//Vf/+/TVixAiVKFFCdnZ2qlChgmbPni0PDw9NmzYt3ZnyjGZP05sBz2im/t+KIGMAEyZMUJ06dSz+TJgwQdK9B2326NFDlSpV0u7du/XFF19o79696f5ArF27VocPH1Z4eLj27t2runXrmtfzT5cvX9bVq1f17bffavXq1Tp8+LC++OILiz63bt1Sjx495OXlpQ8++ECOjo6Zv/OwyfHjx+Xv76+9e/eqZcuW5vZjx46pV69eeuONN9SjR4+cK/Bf5I8//tCwYcPUr18/7du3Tzt37lRKSormzZtn7nPo0CGVKFFCP/zwg4YOHapp06Zp//792rhxo5YuXaqQkBBFRESY+wcHB2vWrFnat2+fKlSooAEDBigxMVFXr15VUFCQWrdurb179+rjjz/WF198oeDgYPN79+3bp5EjR2rHjh3y9vbW2LFjdf78eYWGhmrr1q3Knz+/Bg8e/NAnDSNjhw8f1o0bNxQQEJBmmb29vQIDA7V169Zc83TwvIIgYwDvvPOODh48aPHnnXfekSTt3LlTCQkJev3115UvXz6VLFlSw4YN08qVK9Osx9nZWZcuXVJISIjOnj2rYcOGKSwsLMPtDho0SM7Ozipbtqzq16+vs2fPmpfdvn1bQUFBKlasmKZOnSqTyZT5Ow6bOTo6qkOHDnJycpKzs7Oke+GmZ8+e6t27tzp37pzDFf57FClSRBs2bJCfn5+io6P1xx9/qHDhwrp69aq5j6urq4KCgmRvb69GjRopKSlJvXv3louLi2rUqKHixYvr8uXL5v69e/fW008/LWdnZ40ZM0a///67fvzxR4WFhalChQrq2rWrHB0dVbFiRfXu3dvi3wFPT081bNhQbm5uun37tjZv3qy3335bRYsWlZubm8aOHaujR4+meb4drHft2jVJMj9H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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# legend='reverse' kääntää selitteen järjestyksen\n", "# rot=0 määrittää luokka-akselin nimiöiden asennon\n", "# stacked=True pinoaa pylväät päällekkäin\n", "# width=0.7 määrittää pylväiden leveyden (voi olla enintään 1)\n", "(df2/1000000).plot(kind='bar', legend='reverse', rot=0, stacked=True, width=0.7)\n", "\n", "plt.title('Myynti vuosina 2016 ja 2017')\n", "plt.xlabel('Alue')\n", "plt.ylabel('Miljoonaa euroa')\n", "plt.grid(axis='x')" ] }, { "cell_type": "code", "execution_count": 9, "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", "
MiesNainen
Tyytymätön178
Ei tyytymätön eikä tyytyväinen1515
Tyytyväinen621
\n", "
" ], "text/plain": [ " Mies Nainen\n", "Tyytymätön 17 8\n", "Ei tyytymätön eikä tyytyväinen 15 15\n", "Tyytyväinen 6 21" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df3 = pd.DataFrame({'Mies':[17, 15, 6],'Nainen':[8, 15, 21]},\n", " index=['Tyytymätön', 'Ei tyytymätön eikä tyytyväinen', 'Tyytyväinen'])\n", "df3" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAG+CAYAAAC0xI8BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA69UlEQVR4nO3deVgW9f7/8RebiluIS5ie6piBgpi44C6KxyUTFdxKI8stj8txydzyiFupZVouuWZGWpqJpiKaS1ruu5J93UpzQcQtg0BBmN8f/riPKCAgcDP4fFwX18U9y2fec88w94uZuedjYxiGIQAAABOwtXYBAAAAGUVwAQAApkFwAQAApkFwAQAApkFwAQAApkFwAQAApkFwAQAApkFwAQAApkFwAUyGZ0ZmTn56v/LTugBZRXABHiEwMFBubm569dVX05xm8ODBcnNz04gRIyzD3NzcNHPmzGyt5eDBg3r77beztc305MQ6PA5fX98U7/GjbNmyRcOHD8/BinJPVtfl/m24d+9eubm5ae/evdldHpBr7K1dAGAGtra2OnLkiC5fvqyyZcumGBcXF6dt27Y9NM/y5cvl4uKSrXWsWLFCZ86cydY205MT6/A4Zs2apaJFi2Z4+sWLF+dcMbksq+uS17Yh8Lg44wJkgLu7uwoWLKgNGzY8NG7r1q0qWLCgnn766RTDq1WrZvoPjLy2Du7u7nr22WetXYap5LVtCDwugguQAYULF5aPj4/CwsIeGrd+/Xq1bNlS9vYpT2A+eJnlzz//1JgxY1SvXj15enqqU6dO2r17d4p5du3apc6dO8vLy0u1atVS37599fvvv0uSRowYoVWrVunSpUtyc3NTSEiIJOnOnTv68MMP5ePjoypVqsjPz0/r169P0a6vr69mzJihKVOmqF69eqpatap69Oihs2fPprveD67DiRMn1L9/f9WpU0ceHh5q2LChJk6cqNu3b6fZRkhIiNzd3XX06FF17txZnp6eaty4sRYsWJBiuosXL2rYsGFq0KCBPDw8VLduXQ0bNkw3b95MsR73Xypav3692rRpo6pVq6pOnToaOnSooqKiJN27xLdv3z7t27cvxeWRjGwHNzc3LV26VO+99568vb3l5eWl//znP7p27Vqa69miRQv169fvoeEdO3ZU7969La83b96sgIAAeXp6qn79+po4caJiY2Mt42fO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v/+tjh07Zsty7ezs5OTkpKioKElS4cKFZWOTteepAHmdYRiKjY1VVFSUnJyc0v16IQCYRa4Hl9u3b6tnz57q1KmT5s2bp7///lvDhw/XqFGjNGXKFPXu3Vv/+c9/1LlzZ+3fv1/9+vWTm5ubqlatmi3LT+6HJzm8APmdk5MT/U8ByDdyPbhERESoUqVK6tevn+zs7FSgQAF17txZw4YN0w8//CAnJyd17dpVklS3bl35+flp6dKl2RZcbGxsVLZsWZUpU0YJCQnZ0iaQVzk4OHCmBUC+kuvBpUKFClq4MOXj3Tdu3CgPDw+dPn1arq4p+5KpWLGivvvuu0wvJzHx0d12c80fT4KM/C0AeFh+Dv158biQ0Zqs2leRYRj65JNP9OOPP2rJkiUKDg6Wo6NjimkKFSqUpZtpw8PDs6tMAMATxtHRUe7u7tYuI8ecPHlScXFx1i4jS6wWXGJiYjRy5EgdP35cS5YskZubmxwdHRUdHZ1iutu3b6tIkSKZbt/T0zNfp2UAALLKzc3N2iU8JDExMUMnHawSXM6fP69evXrpmWee0XfffSdnZ2dJkqurq3bu3Jli2jNnzujFF1/M9DLs7OwILgAApMLMn4+5/hyXW7duqVu3bqpevbo+//xzS2iRpGbNmunatWtavHixEhIStGfPHq1du1bt27fP7TIBAEAelOtnXEJCQhQREaGwsDBt2LAhxbjDhw9r0aJFev/99zVjxgw5Oztr9OjRqlOnTm6XCQAA8qBcDy5vvfWW3nrrrTTHe3p6atmyZblYEQAAMIsn6pH/AADA3AguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANAguuSwxybB2CTkiv64XACBvsbd2AU8aO1sbDVx2WGeiYqxdSrapWKaoPn3Vy9plAACeAAQXKzgTFaPjEX9ZuwwAAEyHS0UAAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0CC4AAMA0rBpcbty4oWbNmmnv3r2WYUFBQapSpYq8vLwsP8uXL7dilQAAIK+wt9aCDx48qBEjRuj8+fMphoeHh2vChAny9/e3UmUAACCvssoZl1WrVmno0KEaPHhwiuHx8fE6deqUqlSpYo2yAABAHmeVMy4NGjSQn5+f7O3tU4SXEydO6O7du5oxY4YOHjyoYsWKqX379urZs6dsbTOXsRITE7O77GxhZ2dn7RJyTF59zwEgKzhe566M1mSV4FK6dOlUh0dHR8vb21uBgYGaNm2a/u///k/9+vWTra2tevbsmallhIeHZ0ep2crR0VHu7u7WLiPHnDx5UnFxcdYuA5IcHBxU2d1DDvb578BrJCXKxjb/rVfS3QT98uv/KSEhwdqlQByv8zKr3eOSmvr166t+/fqW11WrVlW3bt20fv36TAcXT0/PfJ2W8yI3Nzdrl4D72NnZaeCywzoTFWPtUrJNY7fSerdFJWllT+naKWuXk31Kucq2/UJ5eHhYuxI8IfLi8ToxMTFDJx3yVHDZvHmzrl27pldffdUyLD4+XoUKFcp0W3Z2dgSXXMb7nfeciYrR8Yi/rF1GtnmhdJF7v1w7JV0+at1icgB/Q8gtZt7X8tRzXAzD0KRJk7R7924ZhqHDhw8rODhYnTt3tnZpAAAgD8hTZ1yaNWumkSNHauzYsbpy5YpKlSqlAQMGqG3bttYuDQAA5AFWDy4nT55M8frVV19NcakIAAAgWZ66VAQAAJAeggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADAN+6zMFBcXp1u3bikpKUmSlJCQoFOnTqlZs2bZWhwAAMD9MhxcIiMj5eLiopUrV2rChAm6c+dOivFly5YluAAAgByV4eDSqlUrHTp0SHPmzNGgQYNUpEgR7d+/X926ddNHH32kOnXq5GSdAAAAGb/HJTQ0VJJ07do1devWTXXr1tX58+fl4eGhDz74QCtXrsyxIgEAAKRMBJe1a9dKkkqWLKmEhASVLVtWZ8+elSQ988wzunHjRs5UCAAA8P9lOLjs379fkuTp6akxY8bo9u3bev755/XNN99o1apVcnJyyqkaAQAAJGXiHpcFCxZIkkaNGqXRo0fr77//1rvvvqs+ffro9u3bmjRpUo4VCQAAIGXh69BlypTR/PnzLb/v2bNHCQkJcnR0zPbiAAAA7pel57hs3rxZy5cv16VLl1S6dGl16NBBfn5+2V0bAABAChm+x2XdunWS7t2kO2LECLm6uiowMFDu7u4aO3asVqxYkWNFAgAASJk44zJ37ly1bt1aCxYs0KxZs1I8t8XHx0fjx49Xx44dc6RIAAAAKQtnXCIiIlS7du0U47y9vRUZGZm9lQEAADwgw8El+R4WFxcXy1ejk+3fv1/PPPNM9lYGAADwgAxfKurdu7ckqVu3burXr586d+6sf/zjHzp//ryWL1+ukSNH5liRAAAAUiaCS/IZl44dO8rOzk4hISHavHmzypUrp4kTJ6ply5Y5ViQAAICUxa9DBwQEKCAgILtrAQAASFeGg0tGLgXx9FwAAJCTMnxzLgAAgLVl+IwLZ1MAAIC1ZTi4zJ8/X71799asWbPSnKZ///7ZUhQAAEBqMhxc9u/fr969e2vv3r2pjrexscm2ogAAAFKT4eCyYMECSdJXX32V6virV69mT0UAAABpyPTNuZMnT35oWFhYGL1DAwCAHJfp57hs3rxZRYsWVf/+/RUdHa2xY8dq8+bNGjBgQE7UBwAAYJHp4PLll18qMDBQN27c0JYtW+Ti4qKQkBC98MILOVEfAACARaYvFZUrV07BwcH68ccf5ebmpmXLlhFaAABArsjyk3PLly+vnTt36t1335WDg4MknvUCAAByVpb6KpLuBZfy5ctnZy0AAADp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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df3.plot(kind='bar', rot=0, width=0.7)\n", "\n", "plt.title('Miesten ja naisten vertailua')\n", "plt.ylabel('Henkilöä')\n", "plt.yticks([5, 10, 15, 20]) # y-akselin jakoviivat\n", "plt.grid(axis='x')\n", "plt.legend(ncol=2)\n", "\n", "# Määrittelen luokka-akselin nimiöt, jotta voin lisätä rivinvaihdon (\\n) haluamaani kohtaan\n", "plt.xticks([0, 1, 2], ['Tyytymätön', 'Ei tyytymätön\\n eikä tyytyväinen', 'Tyytyväinen'])\n", "\n", "# Tallennan kaavion tai tarkkaan ottaen tallenna kuvion (figure), jonka sisällä kaavio on\n", "# Kuvioon (figure) pääsen käsiksi plt.gcf-funktiolla (get current figure)\n", "# Ilman parametria bbox_inches='tight' kuvion reunoilta voi jäädä osia tallentumatta\n", "plt.gcf().savefig('testi.png', bbox_inches='tight')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'eps': 'Encapsulated Postscript',\n", " 'jpg': 'Joint Photographic Experts Group',\n", " 'jpeg': 'Joint Photographic Experts Group',\n", " 'pdf': 'Portable Document Format',\n", " 'pgf': 'PGF code for LaTeX',\n", " 'png': 'Portable Network Graphics',\n", " 'ps': 'Postscript',\n", " 'raw': 'Raw RGBA bitmap',\n", " 'rgba': 'Raw RGBA bitmap',\n", " 'svg': 'Scalable Vector Graphics',\n", " 'svgz': 'Scalable Vector Graphics',\n", " 'tif': 'Tagged Image File Format',\n", " 'tiff': 'Tagged Image File Format',\n", " 'webp': 'WebP Image Format'}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Tarjolla olevat kuvion tallennusmuodot\n", "plt.figure().canvas.get_supported_filetypes()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Usean kaavion kuviot\n", "\n", "* Kaavio (**Axes**-luokan olio) on aina **Figure** (kuvio) -luokan olion sisällä \n", "* **Figure**-olion sisään voin sijoittaa useita kaavioita **plt.subplots**-funktiolla\n", "* **plt.subplots** palauttaa sekä kuvio-olion (**fig**) että listan kaavio-olioista (**axs**)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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APZGQAaASuLi4qKgoCCtX7/eFpATExPVrVs3OTg4FHvfLVu2yMPDQy1atNCVK1dst3fu3Flz587VX3/9pdatW6tmzZrq3bu3unXrpsDAQPn6+qpVq1bF7tfBwUGBgYF59hsUFKS1a9fq4MGDuvfeeyVJPj4+tnAsybYuNTMzs0QB+YEHHtADDzyg7Oxs/fbbb/r999+1f/9+nT17Vu7u7te8v9lstn1fo0YN1a1b17a04N5779WKFSuUk5OjI0eO6Pfff9fBgwf166+/5jkvo3bt2unVV19VWFiYQkND9eCDD+qBBx5QYGBgkTWU5HG49dZbJf0viOby9PRUZmZmkfv28vLSfffdp8TERFtATkxMVEhIiFxcXPTLL7/oxIkTGjlyZJ5jt2vXTm5ubvr+++9tAVm6GtCLc72PR0mV5bEB7I2ADACVKDQ0VGPGjFFqaqpcXV21ZcsWPfXUU9e8359//qlTp06pRYsWhbafOnVKTZo00fvvv6833nhDK1eu1DvvvKM6deroscce04QJE+ToWHBV3Z9//imr1aq2bdsWut+0tDRbQK5Vq1aettz95eTkXLP+3O1eeeUVffDBB7p48aJuv/12tWrVyjZ7ey0uLi4Fjm9cVvD2229r2bJlSk9PV/369dWiRQvVqlVL58+fL3R/ZrNZb7zxht555x29+eabWrp0qTw8PDR8+HANHjy40PuU5HHIDciF9de13oc4PDxczz//vNLT03XixAn98ssvmjZtmu3YkjRjxgzNmDGjwH1z107nql+/frHHut7HozRK+9gA9kZABoBK9OCDD6p27drasGGDateuLS8vL7Vs2fKa96tdu7b+/ve/53lp3cjLy0uS1KpVKy1atEhZWVn6+eef9fHHH2vp0qXy9va2LaHIv99bbrlFMTExhe63UaNGpTi74uWG0eeff14hISGqXbu2JKl3797Xve9169Zp9uzZmjRpknr37q26detKkiZMmKDk5OQi79exY0fbkpKtW7cqJiZGL774otq0aWNbQmFU0sehrLp27aqZM2fqiy++0B9//KHbb79d7du3l3R1iYskPfPMM7bbjHKDeUmVx+OR+8qHxWKxvbpw4cKFPNuU9bEB7ImL9ACgEtWoUUPBwcH6/PPPtX79enXv3r1E92vfvr2OHz+uevXqycfHx/a1ZcsWLV++XCaTSe+8846CgoKUlZWlGjVqyN/fXzNnzpQkHT9+XJIKzCK3b99eFy9elNVqzbPfgwcPavHixeX6EvjPP/+sJk2aqHfv3rYwdvLkSR04cKDEs9DF7bt27doaMWKELYBduHBBP//8c5H7njNnjnr37i2r1apatWqpc+fOtg/SKK6/rvU4XI/atWurc+fO+uqrr/TZZ58pLCzMVsPdd9+tevXqKTU1Nc+xPT099fLLL2vfvn3F7jv/uZTH45G7djm3vyRp+/btBY5T2scGsDcCMgBUstx3s9i2bVuJA3JERIT+9re/aejQoYqLi9PWrVv1yiuv6NVXX1WDBg3k7OysDh06KC0tTWPGjNGmTZu0efNmPffcc6pRo4Y6d+4s6eos5OnTp7Vp0yalpaUpMDDQ9nZwK1as0LZt2xQdHa3nn39ejo6OtkBTHlq1aqX9+/frjTfe0I8//qhVq1ZpwIABysrKKnZtbkn3ff78ec2ePVvbtm3TunXrNGDAAJ0+fbrIffv7+9veieP777/Xxo0b9cILL8jd3V0dOnSQdLW/fvvtN23ZskV//fVXiR6H6xUeHq7vvvtOqamp6tmzp+12k8mkiRMn6qOPPtILL7yg77//3raefd++fUUu+8iV/1zK4/HIXa/9n//8Rz/88INiY2M1ffp0ubq62rYpy2MD2BtLLACgkt1///2qU6eObr/9djVu3LhE97nlllv0wQcf6OWXX9b//d//6fz587rjjjs0adIk2wV/zZo109KlS7V48WL985//lMViUcuWLfXWW2/p7rvvlnQ1aG/atEljxozR+PHjNWLECL3xxhtasGCBli1bpjNnzqhhw4YaMmRIoe/Jez1Gjhyp9PR0xcTEaPHixbr99tv1yCOPyMHBQcuWLctzgVtp9erVS6mpqfrkk0+0YsUKNWzYUIGBgXrsscf0n//8R4cOHVKTJk3y3OfBBx/UvHnz9NZbb2ns2LFycHDQfffdp5iYGNtFagMGDNCePXs0fPhwvfTSSwoLC7vm43C9OnbsqFtvvVWenp6655578rT16dNHrq6uWr58uT7++GPdcsstatu2rebNm6c777yz2P3mP5fyeDz+v//v/9OcOXO0ZMkSjRgxQo0bN9bMmTNtr1xIZXtsAHtzsF7rigEAAMrg8uXLatWqlZ5++mkNGzbM3uUAQIkxgwwAKHdJSUn64YcfJImPdgZQ7RCQAQDl7q233tLWrVvVo0ePPO/NCwDVAUssAAAAAAPexQIAAAAwICADAAAABgRkAAAAwICADAAAABgQkAEAAAADAjIAAABgQEAGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAAMCMgAAAGBAQAYAAAAMCMgAAACAAQEZAAAAMCAgAwAAAAYEZAAAAMCAgAwAAAAYEJABAAAAAwIyAAAAYEBABgAAAAwIyAAAAIABARkAAAAwICADAAAABgRkAAAAwICADAAAABgQkAEAAAADAjIAAABg4GTvAoDqJicnR1euXJGjo6McHBzsXQ5wU7JarcrJyZGTk5McHavHXA9jB2BfpRk3CMhAKV25ckXJycn2LgOAJB8fH9WoUcPeZZQIYwdQNZRk3CAgA6WU+19n8+bNq80f5spksViUnJwsHx8fmUwme5dT5dA/RStN3+RuW11mjyXGjmvhuVE0+qZ4Je2f0owbBGSglHJfGjWZTAxUxaB/ikf/FK00fVOdliowdpQM/VM0+qZ4Je2fkowb1edfbwAAAKASEJABAAAAAwIyAAAAYEBABgAAAAwIyAAAAIABARkAAAAwICADAAAABgRkAAAAwICADAAAABgQkAEAAAADAjIAAKgSatWqZe8Sqiz6pnI52bsAoLoqyee9VwWWHKtMjtf+3HkAlaO6jB2VzWQyqXnz5vYuo0q6Zt/kWCRHfq/KEwEZKKNnP9ml/564YO8yitWkgZsW9DPbuwwARmvGSqf22rsK3CjqN5Uil9u7ihsOARkoo19PXdDeY+fsXQaA6ubMIen4LntXAaAYrEEGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAAMCMq5bWlqaLl68aO8yAAAAygUB+SYybdo0mc1mmc1m+fj4qFmzZrafzWazkpKSSr3P06dPKyQkRGfPnr3u+pYuXaphw4ZJkrp37661a9fa2oYNG6alS5de9zEAAACuhU/Su4lERUUpKipKkhQbG6tFixbp66+/vq59Xrp0qdxmj0eNGmX7PjExMU/b8uV8jCYAAKgczCBDkhQaGlpghjYsLEyrV68usm3VqlXq0aOHJKlHjx6Ki4tTu3bttG7dOtt2WVlZ8vPz05dffimz2azNmzfb2s6dO6dWrVpp9+7dysrK0pw5cxQaGiqz2Sx/f3/NnDlTVqtVkjRw4EAtXLhQkjR58mRNmzZNo0aNktlsVnBwsGJiYmz7zcjIUFRUlAIDA+Xv76+JEyfq9OnTkqTU1FR5e3tr1apVCgoK0n333aehQ4fqxIkT5dibVY/FYqnUL3scszp90T/l0zcA/sfez117f5W0D0qKGWRIkiIiIhQbG2ubxd2zZ49SU1MVGhqq9PT0Qtu6desmf39/BQcHKyEhQV5eXtq1a5fWrFmjsLAwSdI333wjV1dXBQcHKzQ0VHFxcXrggQckSQkJCWrUqJFatWql6Ohofffdd3r33XfVoEED7dixQ48//rgeeugh+fv7F6g3NjZWy5Yt06JFi7R69WpFRUUpJCREDRs21JQpU3ThwgXFxsbKxcVFs2fP1tixY/Xhhx/a7r9x40bFx8crKytLQ4cO1euvv26bXb8R7d+/X5mZmZV6zOTk5Eo9XnVD/xSNvgFKzx7jfFVTnmMHARmSpPDwcM2fP1/Jycny8fFRfHy8unbtKldX12Lb0tPT8+wnMjJSffv21alTp+Th4aG4uDhFRETIwcFBffr00dChQ5WRkSE3NzfFxcWpd+/ekqRHH31UvXr1Ur169ZSWlqZLly7J1dVVJ0+eLLRePz8/BQQE2I45ffp0HT58WE5OTtqwYYPWr1+vevXqSZKmTJkiX19f7d27V+7u7pKk4cOHq06dOpKkoKAg7dixoyK6tcrw9vautGNZLBbb74rJZKq041YX9E/RStM3udsCuKoyx/mqpqRjR2nGDQIyJEkeHh7q2LGj1qxZo2bNmikhIcG2pKG4tvx8fHzUuHFjJSYmKiwsTJs3b9bUqVMlSWazWV5eXtqwYYPatGmjlJQURUdHS5IyMzMVFRWln376SZ6enmrevLmsVqtycnKKrDeXs7OzJCknJ0dHjx6VdDVwG5lMJqWmptoCcv369W1tTk5OtqUcNyp7BDGTyUQALAb9UzT6Big9njPlO3YQkGETGRmpGTNmKCAgQLVr11a7du1K1FbYfhITE+Xs7CxfX195eXnZ2nr37q2EhAT98ccfeuihh2yBderUqbr11lu1efNm1axZUzk5OcUeoygNGzaUJK1fvz5PiD506JDuvPNOnTp1qtT7BAAANxcu0oNNp06dZLFY9NprrykiIqJEbTVr1pR09cK4XD179lRKSopWrVpVYD/h4eHauXOn4uPj1adPH9vtGRkZqlmzphwdHZWRkaG5c+cqIyND2dnZpTqHhg0bqlOnTpo1a5bS09OVnZ2tJUuWqHfv3jp37lyp9gUAAG5OBGTYODs728Jtr169StRWv359denSRX379rVdBFe3bl0FBgYqNTVVDz/8cJ79uLu7KygoSE5OTnkuvps6dapSUlLUvn17de3aVX/99ZeCgoJ04MCBUp/H3LlzVadOHYWHh6tDhw7atGmTli9fnmdGGQAAoCgssbhJRUREFJjdlaQ77rhDAQEB8vT0LFGbg4ODFi1aVOi23bt3l4uLS4G2l19+ucBtLVu2VGxsbJH1vvfee7bvZ8+eXaB9//79tu9vvfXWIt+RwsvLK8+2kjRu3LgijwsAAG4+zCBDknTq1Cnt3r1b7777rvr371/itvyOHz+uLVu2KD4+Xv369avIkgEAACoEARmSrr4v8MCBAxUQEKDg4OASt+W3cuVKjR49WoMGDdK9995bkSUDAABUCJZYQJLUp0+fPBfNlbQtvwkTJmjChAnlWRoAAEClYgYZAAAAMCAgAwAAAAYEZAAAAMCANchAGd3t4arLFntXUbwmDdzsXQKA/Oo1kXIu27sK3CjqN7V3BTckAjJQRnMiW5fbZ75XJEuOVSZHB3uXASDXI4ukajB2oBrJsUiO/E6VJ5ZYAGVksVTx6eP/h3AMVC3VZeyobBaLRfv27aN/CnHNviEclzsCMgAAqBIyMzPtXUKVRd9ULgIyAAAAYEBABgAAAAwIyAAAAIABARkAAAAwICADAAAABgRkAAAAwICADAAAABgQkAEAAAADAjIAAABgQEAGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAAMCMgAAAGBAQAYAAAAMCMgAAACAAQEZAAAAMCAgAwAAAAYEZAAAAMCAgAwAAAAYEJABAAAAAwIygHJXq1Yte5cAoBpi7EBV4WTvAoDqymQy2buEKslkMql58+b2LiMPS45VJkcHe5cBSGLsKEqVGztyLJIjj9XNioAMlNGzn+zSf09csHcZuIYmDdy0oJ/Z3mUA/7NmrHRqr72rQHHqN5Uil9u7CtgRARkoo19PXdDeY+fsXQaA6ubMIen4LntXAaAYrEEGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAINKD8h//PHHde/DYrHoyJEj5VBN6ZVH/VXJ+fPndfbs2eveT1pami5evFgOFQEAANhXqQJyUFCQfHx8ZDabC3wlJSVJkrp37661a9cWev85c+ZoyZIl1130xIkTFR8ff937Kcy0adM0bdo0ScpzXlLh9eee79q1a9W9e/cKqcl4HEkaOHCgFi5ceM1tk5KSZDYX/wliXbp00cGDB6+rttOnTyskJKRcgvbSpUs1bNgwSQV/l4YNG6alS5de9zEAAACKU+pP0psxY4YiIiKKbE9MTCyyLT09vbSHq9D9FCYqKsr2/Y4dO655XOP59uzZs8LqKq5fi9s2/znkVx59eenSpXKbPR41apTt+/znvHw5H/sJAAAqXrkvsQgKClJsbGyB2xcvXqx169Zp3bp16tmzp9544w2FhITk2ebNN9/UgAEDim3797//raSkJC1btkyjRo3StGnT9MQTT+TZNioqSs8884xSU1Pl7e2t+Ph4de7cWW3atNFzzz2npKQk9ezZU2azWYMHD7bNfGZkZGjq1Kl6+OGH1aZNG3Xs2NE2Y5m/fkk6evSonnrqKfn7+ysgIECTJk1SWlqaJGnbtm0KCgrSkiVL1LFjR7Vv317jxo1TRkZGof1mtVoVExOjkJAQ+fr66rHHHtOePXuu2a/79u1Thw4d9M4770iSfvnlF40cOVKdOnVSq1at1K1bN33zzTeFHjO3j4cPH67o6GiFhoYWmKENCwvT6tWri2xbtWqVevToIUnq0aOH4uLi1K5dO61bt862XVZWlvz8/PTll1/KbDZr8+bNtrZz586pVatW2r17t7KysjRnzhyFhobKbDbL399fM2fOlNVqlZR35nzy5MmaNm2aRo0aJbPZrODgYMXExNj2m5GRoaioKAUGBsrf318TJ07U6dOnJcn2e7Fq1SoFBQXpvvvu09ChQ3XixIlC+wk3BovFUmW+qlo9VemrNH0DVDR7Px8YN8q/f0qq1DPIZTVmzBjbuuHZs2crLS1N8+fP165du9S6dWtJUnx8vIYMGaKOHTsW2RYZGanDhw/bAufu3bvVt29fnTx5Ug0bNlRWVpYSExO1YMEC27E3bdqkTz/9VEeOHFF4eLj27dun6OhoOTs7q1+/flqxYoXGjh2refPmKTU1VatXr1bt2rX1+eefa/z48QoNDS1Qf3Z2tp544gm1bNlSn3/+uaxWq2bMmKFRo0Zp5cqVkq4G6JMnT+qLL77QyZMnNWDAAK1YsUIjRowo0D8rVqzQ22+/rSVLlqhx48Zas2aNhg4dqvXr16t+/fqF9umePXs0bNgwTZo0SX369JEkjRs3TsHBwVq0aJGsVqvmzZun559/Xp07dy5w/w0bNsjb21vR0dHy8/OTJMXGxtpmcffs2aPU1FSFhoYqPT290LZu3brJ399fwcHBSkhIkJeXl3bt2qU1a9YoLCxMkvTNN9/I1dVVwcHBCg0NVVxcnB544AFJUkJCgho1aqRWrVopOjpa3333nd599101aNBAO3bs0OOPP66HHnpI/v7+BeqPjY3VsmXLtGjRIq1evVpRUVEKCQlRw4YNNWXKFF24cEGxsbFycXHR7NmzNXbsWH344Ye2+2/cuFHx8fHKysrS0KFD9frrr+d5BQE3lv379yszM9PeZdgkJyfbu4Qqi75BVcG4Ub2UZ/+UaYnFiy++mOe222+/Pc+MYUk0aNBAHTt21Jo1a9S6dWvt3btXqamp6tq1q1xdXYtsy69Vq1Zq3LixEhIS9OSTT2rjxo1yc3OTn5+fjh49Kkl64oknVKtWLTVt2lQeHh7q1auXGjZsKElq06aNbbtx48bJZDLJzc1NJ06cUM2aNSVdvQCtUaNGeY6blJSkI0eO6JNPPpGbm5utb9q3b59n5nfMmDFycXFRo0aN5Ofnp99++63Q/vjggw80cuRINWvWTJLUu3dvrV69WmvXri0wQy5Je/fuVUxMjEaMGGELx5K0bNkyNWzYUFarVUePHlWdOnV08uTJEj0m4eHhmj9/vpKTk+Xj46P4+Hjb41FcW/5lGpGRkerbt69OnTolDw8PxcXFKSIiQg4ODurTp4+GDh2qjIwMubm5KS4uTr1795YkPfroo+rVq5fq1auntLQ0Xbp0Sa6urkXW7+fnp4CAANsxp0+frsOHD8vJyUkbNmzQ+vXrVa9ePUnSlClT5Ovrq71798rd3V3S1ZnzOnXqSLo6Q3+t5Sio3ry9ve1dgqSrMxy5zyOTyWTvcqqU0vRN7rZARWLcqB5K2j+lGTdKHZCnT59e7Brk0oiIiND06dP13HPPKS4uzha4rtVW2H7i4+P15JNPKjY2Vr169ZKDg4OtPTcQSZLJZLKFIklydHS0vYR/5swZzZo1S/v27ZOXl5datmwpScrJySlwzDNnzui2226zhWNJcnNzk7u7u44ePWqb9fXw8LC1Ozs7246V39GjRzVnzhzNmzfPdtuVK1dsNeT3ww8/yGw2KyEhQYMHD1aNGjUkSSkpKRo9erROnTqlxo0bq27dukUeMz8PDw/bPybNmjVTQkKCbUlDcW35+fj4qHHjxkpMTFRYWJg2b96sqVOnSrp64aOXl5c2bNigNm3aKCUlRdHR0ZKkzMxMRUVF6aeffpKnp6eaN28uq9VaaP/n1pTL2dlZ0tXHKvcfnkcffTTP9iaTSampqbbfB+PMvJOTU4n7CdVTVfujYjKZqlxNVQV9g6qiqv0e8twoXnn2j13fBzkoKEiS9P3332v9+vWKjIwsUVt+jzzyiH799Vft2LFD33//fYEAbwzLxZkwYYJatmypLVu2KC4uTv/85z+L3PaOO+5Qenp6njXF58+fV3p6ep7gVlKenp564YUXlJSUZPtau3atxo8fX+j2Q4YM0euvv67z58/bgurJkyc1YcIETZw4UVu3btUHH3xgWx9cUpGRkfrss8+0efNm1a5dW+3atStRW2H7SUxM1GeffSZfX195eXnZ2nr37q2EhAStWbNGDz30kC2wTp06VbVq1dLmzZu1bt06vfTSS0WG4+Lkvjqwfv36PP0ZGxtb6FITAAAAo0oNyDVq1ND58+dtPzs7O6tnz55asGCB3Nzc5OvrW6K2/PupV6+eAgMDFRUVJV9fX/3tb38rU33nz5+Xi4uLTCaTzp49qxdeeEGSlJ2dXeC4Pj4+atKkiaZPn67z58/r/Pnzev7553XXXXepbdu2pT72o48+qiVLluiXX36RJH333Xfq3r27fvrpp0K3d3Z2lqurq2bNmqW33npL27dv14ULF2SxWFSrVi1J0qFDh7R48WJJVy+UK0z+vuzUqZMsFotee+21Av9oFNWWuxTF+M9Cz549lZKSolWrVhXYT3h4uHbu3Kn4+Pg8y0MyMjJUs2ZNOTo6KiMjQ3PnzlVGRoat/0uqYcOG6tSpk2bNmqX09HRlZ2dryZIl6t27t86dO1eqfQEAgJtPqQPy9OnTC30f5NyXyYvTrVs3bd++XZ06dbLdFhERoX379hW6bKOotvDwcH3yySd67LHHCmxb3Ezztbz00kv69NNP1bZtW/Xq1Uv169dX69atdeDAgQL1Ozk5admyZbpy5YpCQkLUuXNnZWdn6+2335aTU+mvfRwyZIjCw8M1evRomc1mzZo1S9OmTVNwcHCx9/P391efPn307LPPytPTU88884yefvpptW3bVuPGjVNkZKRq1qxpO4f8+vbtq0mTJunVV1+V9L9/TFJSUtSrV6882xbVVr9+fXXp0kV9+/a1XQRXt25dBQYGKjU1VQ8//HCe/bi7uysoKEhOTk55Lr6bOnWqUlJS1L59e3Xt2lV//fWXgoKCiqy9OHPnzlWdOnUUHh6uDh06aNOmTVq+fHmZZvcBAMDNxcFq54WXf/75pzp27Kgvv/zS9tJ4SdryS0lJ0cCBA7V582bbjCbKJiYmRt9++22h7ztcXFt+L730ki5duqQZM2ZURJl2Y7FYtHPnTs3aelHbjzAjXdW1+FsdJY7vaO8ybHJ/f9q0acNawnxK0zfVsR9tNW+fLNPRH+1dDopze2tp5Lf2rsKmOv6+V6aS9k9p+rHS3uYtv6ysLP3xxx+KiYlRYGBgngBcXFt+GRkZOnbsmObPn6+IiAjC8XU4deqUjh8/rnfffVdTpkwpcVt+x48f1++//674+Hjb+zMDAABUF3a7SC8rK0v9+vXTjh07NHny5BK35XfixAn17dtXf/31l0aPHl2RJd/wNm7cqIEDByogIKDA0o7i2vJbuXKlRo8erUGDBunee++tyJIBAADKnd1mkN3c3PTzzz+Xui2/Jk2a8P615aRPnz55LporaVt+EyZM0IQJE8qzNAAAgEpj17d5AwAAAKoaAjIAAABgQEAGAAAADOy2Bhmo7u72cNVli72rwLU0aeB27Y2AylSviZRz2d5VoDj1m9q7AtgZARkoozmRrXk/ymrCkmOVybFkHzkPVLhHFkmMHVVfjkVy5HG6WbHEAigji4Xp48JYLBbt27evSvUP4RhVSVV6blQlVW7sIBzf1AjIAMpdZmamvUsAUA0xdqCqICADAAAABgRkAAAAwICADAAAABgQkAEAAAADAjIAAABgQEAGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAAMCMgAAAGBAQAYAAAAMCMgAAACAAQEZAAAAMCAgAwAAAAYEZAAAAMCAgAwAAAAYEJABAAAAAwIyAAAAYEBABgAAAAwIyAAAAIABARkAAAAwICADKHe1atWydwkAAJQZARkoI5PJZO8SqiSTyaTmzZvfEP1jybHauwTcgG6E50axciz2rgC4bk72LgCorp79ZJf+e+KCvctABWnSwE0L+pntXQZuRGvGSqf22ruKilG/qRS53N5VANeNgAyU0a+nLmjvsXP2LgNAdXPmkHR8l72rAFAMllgAAAAABgRkAAAAwICADAAAABgQkAEAAAADAjIAAABgQEAGAAAADAjIAAAAgAEBGeUqLS1NFy9erPTjnj9/XmfPnq304wIAgBsPAfkmNW3aNJnNZpnNZvn4+KhZs2a2n81ms5KSkkq9z9OnTyskJKTCgmpuXWvXrlX37t3ztHXp0kUHDx60/ZyUlCSz+eqnoA0bNkxLly6tkJoAAMCNh0/Su0lFRUUpKipKkhQbG6tFixbp66+/vq59Xrp0qUJnj3fs2GH7vmfPnnna0tPT8/zs6+tr2375cj72FAAAlBwBGQWEhobqkUce0ahRo2y3hYWFafDgwXrzzTcLbRs0aJBmzZolSerRo4emT5+uF198UdOmTVNYWJgkKSsrSx07dtT8+fOVlJSkQ4cOycXFRV988YXc3Nz03HPP6ddff9UHH3ygK1euaMiQIRo9erQkafv27Zo/f75+/fVX/fXXX7rnnns0bdo0tWnTRiEhIZKk4cOHa9y4cRo+fLi+/PJLvf766/r999/l4eGh/v37a9CgQXJ0dNTkyZNVo0YNpaWladu2bapbt64GDx6sQYMGVVYXoxqxWCwVsr/y3u+NoDR9Q/9VbWV5fHhuFI2+KV5J+6c0/UdARgERERGKjY21heA9e/YoNTVVoaGhSk9PL7StW7du8vf3V3BwsBISEuTl5aVdu3ZpzZo1toD8zTffyNXVVR06dFBSUpI2bNig+fPna/bs2Xr55Zc1adIkDR48WJs2bdKmTZs0ZswYPfLII6pXr57+8Y9/aPz48erfv78uXbqkKVOmaO7cuVqxYoU2bNggb29vRUdHy8/PT1u3btVTTz2luXPn6uGHH9b+/fttQXvIkCGSrs6aL1u2TIsWLdLq1asVFRWlkJAQNWzYsPI7HFXa/v37lZmZWe77TU5OLvd93ijom+rvep43PP5Fo2+KV579Q0BGAeHh4Zo/f76Sk5Pl4+Oj+Ph4de3aVa6ursW25V/mEBkZqb59++rUqVPy8PBQXFycIiIi5ODgIElq0qSJunbtKkkKCAhQdHS0Ro0aJWdnZwUFBUmSjh07Jk9PT3388cdq1KiRLl++rKNHj8rd3b3IJ0JsbKyCg4PVrVs3SVKLFi00YsQIvffee7aA7Ofnp4CAAFud06dP1+HDhwnIKMDb27tc92exWGzPH5PJVK77ru5K0ze526JqKsvzhudG0eib4pW0f0ozbhCQUYCHh4c6duyoNWvWqFmzZkpISNDChQuv2Zafj4+PGjdurMTERIWFhWnz5s2aOnWqrd3d3d32vaPj1etFb7311jw/5+TkyGQyadu2bRo+fLguXryoJk2ayMnJSVartdDjnjlzRvfee2+e27y8vHT06NE855jL2dnZdiwgv4r6Y2QymfhDVwT6pvq7nsePx79o9E3xyrN/CMgoVGRkpGbMmKGAgADVrl1b7dq1K1FbYftJTEyUs7OzfH195eXlZWvLnUm+ll27dmnmzJn66KOP1LJlS0nSW2+9pd9++63Q7e+44w4dPnw4z21HjhzJE4oBAACKwtu8oVCdOnWSxWLRa6+9poiIiBK11axZU5KUkZFhu61nz55KSUnRqlWrCuynpM6fPy9HR0e5uLhIknbu3KmYmBhlZWXZtqlRo4bOnz8v6Woo//rrr7V+/XpZLBbt27dP0dHRioyMLNPxAQDAzYWAjEI5Ozvbwm2vXr1K1Fa/fn116dJFffv21YcffihJqlu3rgIDA5WamqqHH364TLUEBAToscce04ABA+Tr66vnn39eQ4YM0dmzZ3X69GlJUt++fTVp0iS9+uqrat26tRYsWKDo6Gj5+vpq7Nix6t+/f5533gAAACgKSyygiIiIQmd377jjDgUEBMjT07NEbQ4ODlq0aFGh23bv3t02AyxJ48aNy7ONn5+f9u/fn+c248+TJ0/W5MmT87TnXnAnSVOnTs2zvjk4OFjBwcEFapGk2bNnF7gt/7EBAMDNixlkFHDq1Cnt3r1b7777rvr371/itvyOHz+uLVu2KD4+Xv369avIkgEAAMoNARkFbNy4UQMHDlRAQECBWdji2vJbuXKlRo8erUGDBhV4VwkAAICqiiUWKKBPnz7q06dPqdvymzBhgiZMmFCepQEAAFQ4ZpABAAAAAwIyAAAAYEBABgAAAAxYgwyU0d0errpssXcVqChNGrjZuwTcqOo1kXIu27uKilG/qb0rAMoFARkoozmRrcvtM99RNVlyrDI5luwj0YESe2SRdCOPHTkWyfEGPj/cFFhiAZSRxcL0cWFyP977RugfwjEqwo3w3CgW4Rg3AAIygHKXmZlp7xIAACgzAjIAAABgQEAGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAAMCMgAAAGBAQAYAAAAMnOxdAFDdWK1WSZLFYpHFYrFzNVVPbp/QN4Wjf4pWmr7J3Sb3+VgdMHYUj+dG0eib4pW0f0ozbjhYq9PoAlQBWVlZSk5OtncZACT5+PioRo0a9i6jRBg7gKqhJOMGARkopZycHF25ckWOjo5ycHCwdznATclqtSonJ0dOTk5ydKweqwUZOwD7Ks24QUAGAAAADKrHv90AAABAJSEgAwAAAAYEZAAAAMCAgAwAAAAYEJABAAAAAwIyAAAAYEBABgAAAAwIyAAAAIABARkAAAAwICADAAAABgRkAAAAwICADAAAABgQkAEAAAADAjIAAABgQEAGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAAMCMgAAAGBAQAYAAAAMCMgAAACAAQEZAAAAMCAgAwAAAAYEZAAAAMCAgAwAAAAYEJABAAAAAwIyAAAAYOBk7wKA6iYnJ0dXrlyRo6OjHBwc7F0OcFOyWq3KycmRk5OTHB2rx1wPYwdgX6UZNwjIQClduXJFycnJ9i4DgCQfHx/VqFHD3mWUCGMHUDWUZNwgIAOllPtfZ/PmzavNH+bKZLFYlJycLB8fH5lMJnuXU+XQP0UrTd/kbltdZo8lxo5r4blRNPqmeCXtn9KMGwRkoJRyXxo1mUwMVMWgf4pH/xStNH1TnZYqMHaUDP1TNPqmeCXtn5KMG9XnX28AAACgEhCQAQAAAAMCMgAAAGBAQAYAAAAMCMgAAACAAQEZAAAAMCAgAwAAAAYEZAAAAMCAgAwAAAAYEJABAAAAAwIygHJXq1Yte5dQpdE/QOF4bhSNvqlcTvYuAKiuSvJ57zcjk8mk5s2b27uMKuua/ZNjkRz53bqRVZexw5pjkUMl/i4ydhTthuqbajLGEZCBslozVjq1195V4EZSv6kUudzeVaCCPfvJLv33xAV7l1GsTt4eejqkmfTJMOn0AXuXgxtFNRrjCMhAWZ05JB3fZe8qAFQzv566oL3Hztm7jGI19nC9+s3pA4xzuCmxBhkAAAAwICADAAAABgRkAAAAwICADAAAABgQkAEAAAADAjIAAABgQEDGdUtLS9PFixftXQYAAEC5ICDfRKZNmyaz2Syz2SwfHx81a9bM9rPZbFZSUlKp93n69GmFhITo7Nmz113f0qVLNWzYMElS9+7dtXbtWlvbsGHDtHTp0us+BgAAwLXwQSE3kaioKEVFRUmSYmNjtWjRIn399dfXtc9Lly6V2+zxqFGjbN8nJibmaVu+vHp88g4AAKj+mEGGJCk0NLTADG1YWJhWr15dZNuqVavUo0cPSVKPHj0UFxendu3aad26dbbtsrKy5Ofnpy+//FJms1mbN2+2tZ07d06tWrXS7t27lZWVpTlz5ig0NFRms1n+/v6aOXOmrFarJGngwIFauHChJGny5MmaNm2aRo0aJbPZrODgYMXExNj2m5GRoaioKAUGBsrf318TJ07U6dOnJUmpqany9vbWqlWrFBQUpPvuu09Dhw7ViRMnyrE3AQBAdcYMMiRJERERio2Ntc3i7tmzR6mpqQoNDVV6enqhbd26dZO/v7+Cg4OVkJAgLy8v7dq1S2vWrFFYWJgk6ZtvvpGrq6uCg4MVGhqquLg4PfDAA5KkhIQENWrUSK1atVJ0dLS+++47vfvuu2rQoIF27Nihxx9/XA899JD8/f0L1BsbG6tly5Zp0aJFWr16taKiohQSEqKGDRtqypQpunDhgmJjY+Xi4qLZs2dr7Nix+vDDD23337hxo+Lj45WVlaWhQ4fq9ddft82ul1i9JlLO5bJ0N1C4+k0lSRaLxc6F2EfueZfk/G/WPgJuBOX9/C3p2FGa4xKQIUkKDw/X/PnzlZycLB8fH8XHx6tr165ydXUtti09PT3PfiIjI9W3b1+dOnVKHh4eiouLU0REhBwcHNSnTx8NHTpUGRkZcnNzU1xcnHr37i1JevTRR9WrVy/Vq1dPaWlpunTpklxdXXXy5MlC6/Xz81NAQIDtmNOnT9fhw4fl5OSkDRs2aP369apXr54kacqUKfL19dXevXvl7u4uSRo+fLjq1KkjSQoKCtKOHTtK32mPLJJMptLfDyhGzpVs7d33X2VnZ9u7FLtJTk62dwkAKtD+/fuVmZlZ7vstz7GDgAxJkoeHhzp27Kg1a9aoWbNmSkhIsC1pKK4tPx8fHzVu3FiJiYkKCwvT5s2bNXXqVEmS2WyWl5eXNmzYoDZt2iglJUXR0dGSpMzMTEVFRemnn36Sp6enmjdvLqvVqpycnCLrzeXs7CxJysnJ0dGjRyVdDdxGJpNJqamptoBcv359W5uTk5NtKUdpLPjqgH4/U/5P8PJ0Z91b9HRIs0qdbcvJydHBgwd1zz33yNGRVVz5XbN/HBzVokWLyi+sCrBYLLZ/xE3X+Oczd1sA1Y+3t3e57q+kY0dpxg0CMmwiIyM1Y8YMBQQEqHbt2mrXrl2J2grbT2JiopydneXr6ysvLy9bW+/evZWQkKA//vhDDz30kC2wTp06Vbfeeqs2b96smjVrKicnp9hjFKVhw4aSpPXr1+cJ0YcOHdKdd96pU6dOlXqfRdl88LS2HzlXbvurCC3+VkdPhzS7Ztgob5mZmXJ0dKz041YX9E/xTCYTfQPcwCrq+V2eYwfTO7Dp1KmTLBaLXnvtNUVERJSorWbNmpKuXhiXq2fPnkpJSdGqVasK7Cc8PFw7d+5UfHy8+vTpY7s9IyNDNWvWlKOjozIyMjR37lxlZGSU+mXmhg0bqlOnTpo1a5bS09OVnZ2tJUuWqHfv3jp3rmqHWQAAUDUQkGHj7OxsC7e9evUqUVv9+vXVpUsX9e3b13YRXN26dRUYGKjU1FQ9/PDDefbj7u6uoKAgOTk55bn4burUqUpJSVH79u3VtWtX/fXXXwoKCtKBAwdKfR5z585VnTp1FB4erg4dOmjTpk1avnx5nhllAACAorDE4iYVERFRYHZXku644w4FBATI09OzRG0ODg5atGhRodt2795dLi4uBdpefvnlAre1bNlSsbGxRdb73nvv2b6fPXt2gfb9+/fbvr/11luLfEcKLy+vPNtK0rhx44o8LgAAuPkwgwxJ0qlTp7R79269++676t+/f4nb8jt+/Li2bNmi+Ph49evXryJLBgAAqBAEZEi6+r7AAwcOVEBAgIKDg0vclt/KlSs1evRoDRo0SPfee29FlgwAAFAhWGIBSVKfPn3yXDRX0rb8JkyYoAkTJpRnaQAAAJWKGWQAAADAgIAMAAAAGBCQAQAAAAMCMgAAAGDARXpAGd3t4arLFntXUbwmDdzsXQKAfKrD2HFn3VuuflO/qX0LwY2lGv0+EZCBMpoT2brCPk++PFlyrDI5Oti7DAD/T3UZO6w5FjlELrd3GbjR5Fgkx6r/+88SC6CMLJYqPgX0/xCOgaqluowdDpUcYiwWi/bt21dt+qcy3VB9Uw3CsURABgAAVURmZqa9S6iy6JvKRUAGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAAMCMgAAAGBAQAYAAAAMCMgAAACAAQEZAAAAMCAgAwAAAAYEZAAAAMCAgAwAAAAYEJABAAAAAwIyAAAAYEBABgAAAAwIyAAAAIABARkAAAAwICADAAAABgRkAAAAwICADAAAABgQkAEAAAADAjIAAABgQEAGUO5q1apl7xIAVEOMHUWjb4rn7OxcrvtzKte9ATcRk8lk7xKqJJPJpObNm9u7jLxyLJIjjxeqBsaOwlW1scOaY5FDFRk3qlrfVDUmk0ktm98raznuk4AMlNWasdKpvfauAtdSv6kUudzeVQA2z36yS/89ccHeZaAYnbw99HRIM+mTYdLpA/YuB9dSv6kcI5fLYrGU2y4JyEBZnTkkHd9l7yoAVDO/nrqgvcfO2bsMFKOxh+vVb04fYJy/SbEGGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAAMCMgAAAGBQ6QH5jz/+uO59WCwWHTlypByqKb3yqL8qOX/+vM6ePXvd+0lLS9PFixfLoSIAAAD7KlVADgoKko+Pj8xmc4GvpKQkSVL37t21du3aQu8/Z84cLVmy5LqLnjhxouLj4697P4WZNm2apk2bJkl5zksqvP7c8127dq26d+9eITUZjyNJAwcO1MKFC6+5bVJSksxmc7H77dKliw4ePHhdtZ0+fVohISHlErSXLl2qYcOGSSr4uzRs2DAtXbr0uo8BAABQnFJ/UMiMGTMUERFRZHtiYmKRbenp6aU9XIXupzBRUVG273fs2HHN4xrPt2fPnhVWV3H9Wty2+c8hv/Loy0uXLpXb7PGoUaNs3+c/5+XL+TQ0AABQ8cp9iUVQUJBiY2ML3L548WKtW7dO69atU8+ePfXGG28oJCQkzzZvvvmmBgwYUGzbv//9byUlJWnZsmUaNWqUpk2bpieeeCLPtlFRUXrmmWeUmpoqb29vxcfHq3PnzmrTpo2ee+45JSUlqWfPnjKbzRo8eLBt5jMjI0NTp07Vww8/rDZt2qhjx462Gcv89UvS0aNH9dRTT8nf318BAQGaNGmS0tLSJEnbtm1TUFCQlixZoo4dO6p9+/YaN26cMjIyCu03q9WqmJgYhYSEyNfXV4899pj27NlzzX7dt2+fOnTooHfeeUeS9Msvv2jkyJHq1KmTWrVqpW7duumbb74p9Ji5fTx8+HBFR0crNDS0wAxtWFiYVq9eXWTbqlWr1KNHD0lSjx49FBcXp3bt2mndunW27bKysuTn56cvv/xSZrNZmzdvtrWdO3dOrVq10u7du5WVlaU5c+YoNDRUZrNZ/v7+mjlzpqzWq5+ubpw5nzx5sqZNm6ZRo0bJbDYrODhYMTExtv1mZGQoKipKgYGB8vf318SJE3X69GlJsv1erFq1SkFBQbrvvvs0dOhQnThxotB+AgAAN5dK+6jpMWPG2NYNz549W2lpaZo/f7527dql1q1bS5Li4+M1ZMgQdezYsci2yMhIHT582BY4d+/erb59++rkyZNq2LChsrKylJiYqAULFtiOvWnTJn366ac6cuSIwsPDtW/fPkVHR8vZ2Vn9+vXTihUrNHbsWM2bN0+pqalavXq1ateurc8//1zjx49XaGhogfqzs7P1xBNPqGXLlvr8889ltVo1Y8YMjRo1SitXrpR0NUCfPHlSX3zxhU6ePKkBAwZoxYoVGjFiRIH+WbFihd5++20tWbJEjRs31po1azR06FCtX79e9evXL7RP9+zZo2HDhmnSpEnq06ePJGncuHEKDg7WokWLZLVaNW/ePD3//PPq3Llzgftv2LBB3t7eio6Olp+fnyQpNjbWNou7Z88epaamKjQ0VOnp6YW2devWTf7+/goODlZCQoK8vLy0a9curVmzRmFhYZKkb775Rq6urgoODlZoaKji4uL0wAMPSJISEhLUqFEjtWrVStHR0fruu+/07rvvqkGDBtqxY4cef/xxPfTQQ/L39y9Qf2xsrJYtW6ZFixZp9erVioqKUkhIiBo2bKgpU6bowoULio2NlYuLi2bPnq2xY8fqww8/tN1/48aNio+PV1ZWloYOHarXX389zysI11SviZRzueTbwz7qN5V09dqFqiC3jqpST1VSmr6h/wDkl5OTU2x7acaNMi2xePHFF/Pcdvvtt+eZMSyJBg0aqGPHjlqzZo1at26tvXv3KjU1VV27dpWrq2uRbfm1atVKjRs3VkJCgp588klt3LhRbm5u8vPz09GjRyVJTzzxhGrVqqWmTZvKw8NDvXr1UsOGDSVJbdq0sW03btw4mUwmubm56cSJE6pZs6akqxegNWrUKM9xk5KSdOTIEX3yySdyc3Oz9U379u3zzPyOGTNGLi4uatSokfz8/PTbb78V2h8ffPCBRo4cqWbNmkmSevfurdWrV2vt2rUFZsglae/evYqJidGIESNs4ViSli1bpoYNG8pqtero0aOqU6eOTp48WaLHJDw8XPPnz1dycrJ8fHwUHx9vezyKa8u/TCMyMlJ9+/bVqVOn5OHhobi4OEVERMjBwUF9+vTR0KFDlZGRITc3N8XFxal3796SpEcffVS9evVSvXr1lJaWpkuXLsnV1bXI+v38/BQQEGA75vTp03X48GE5OTlpw4YNWr9+verVqydJmjJlinx9fbV37165u7tLujpzXqdOHUlXZ+ivtRylgEcWSSZT6e4Du7DmWHTgwIEqdSFpcnKyvUuosugbAGVx8OBBZWZmlsu+Sh2Qp0+fXuwa5NKIiIjQ9OnT9dxzzykuLs4WuK7VVth+4uPj9eSTTyo2Nla9evWSg4ODrT03EEmSyWSyhSJJcnR0tL2Ef+bMGc2aNUv79u2Tl5eXWrZsKanw/0jOnDmj2267zRaOJcnNzU3u7u46evSobdbXw8PD1u7s7Gw7Vn5Hjx7VnDlzNG/ePNttV65csdWQ3w8//CCz2ayEhAQNHjxYNWrUkCSlpKRo9OjROnXqlBo3bqy6desWecz8PDw8bP+YNGvWTAkJCbYlDcW15efj46PGjRsrMTFRYWFh2rx5s6ZOnSrp6oWPXl5e2rBhg9q0aaOUlBRFR0dLkjIzMxUVFaWffvpJnp6eat68uaxWa5H/EebvW+nqY5X7D8+jjz6aZ3uTyaTU1FTb74NxZt7JyanE/ZRrwVcH9PuZ8nkiouLcWfcWPR3STE2bNrV3KZKuzmDk/qNp4h+sPErTN7nbAkCue+65R46ORa8eLs24UWlLLAoTFBSk6dOn6/vvv9f69evzLIsori2/Rx55RK+88op27Nih77//3vYuFLmMYbk4EyZMUFBQkN588005OTkpPT3dtlwivzvuuEPp6em2mVDp6lumpaeny8PDo9Rhy9PTU+PHj8/zThiHDx/OE+6NhgwZopEjRyosLEwLFy7UpEmTdPLkSU2YMEGLFi1SUFCQpKvLKD7//PMS1xEZGakZM2YoICBAtWvXVrt27UrUVth+EhMT5ezsLF9fX3l5ednaevfurYSEBP3xxx966KGHbOc4depU3Xrrrdq8ebNq1qypnJycYo9RlNxXB9avX58nRB86dEh33nmnTp06Vep9FmbzwdPafuRcuewLFafF3+ro6ZBmVS6MmkymKldTVUHfACgLR0fHchs7KvV9kGvUqKHz58/bfnZ2dlbPnj21YMECubm5ydfXt0Rt+fdTr149BQYGKioqSr6+vvrb3/5WpvrOnz8vFxcXmUwmnT17Vi+88IIkKTs7u8BxfXx81KRJE02fPl3nz5/X+fPn9fzzz+uuu+5S27ZtS33sRx99VEuWLNEvv/wiSfruu+/UvXt3/fTTT4Vu7+zsLFdXV82aNUtvvfWWtm/frgsXLshisahWrVqSrgbCxYsXS7p6oVxh8vdlp06dZLFY9NprrxV4paCottylKMYLEHv27KmUlBStWrWqwH7Cw8O1c+dOxcfH51kekpGRoZo1a8rR0VEZGRmaO3euMjIybP1fUg0bNlSnTp00a9YspaenKzs7W0uWLFHv3r117hyBFgAAFK/UAXn69OmFvg9y7svkxenWrZu2b9+uTp062W6LiIjQvn37Cl22UVRbeHi4PvnkEz322GMFto2MjCztKdm89NJL+vTTT9W2bVv16tVL9evXV+vWrXXgwIEC9Ts5OWnZsmW6cuWKQkJC1LlzZ2VnZ+vtt9+Wk1PpJ+aHDBmi8PBwjR49WmazWbNmzdK0adMUHBxc7P38/f3Vp08fPfvss/L09NQzzzyjp59+Wm3bttW4ceMUGRmpmjVr2s4hv759+2rSpEl69dVXJf3vH5OUlBT16tUrz7ZFtdWvX19dunRR3759bRfB1a1bV4GBgUpNTdXDDz+cZz/u7u4KCgqSk5NTnovvpk6dqpSUFLVv315du3bVX3/9paCgoCJrL87cuXNVp04dhYeHq0OHDtq0aZOWL1+eZ0YZAACgMA7W0q4FKGd//vmnOnbsqC+//NL20nhJ2vJLSUnRwIEDbS/Po+xiYmL07bffFvq+w8W15ffSSy/p0qVLmjFjRkWUaTcWi0U7d+7UrK0XWWJRDbT4Wx0lju9o7zJscn9/2rRpwzKCfErTN9WxHxk7qo+erW/Xa/3bSsselI7vsnc5uJbbW0sjv5XFYil2PCjNuGG3NchZWVn6448/FBMTo8DAwDwBuLi2/DIyMnTs2DHNnz9fERERhOPrcOrUKR0/flzvvvuupkyZUuK2/I4fP67ff/9d8fHxtvdnBgAAqC4qdQ2yUVZWlvr166cdO3Zo8uTJJW7L78SJE+rbt6/++usvjR49uiJLvuFt3LhRAwcOVEBAQIGlHcW15bdy5UqNHj1agwYN0r333luRJQMAAJQ7u80gu7m56eeffy51W35NmjQp/fvXolB9+vTJc9FcSdvymzBhgiZMmFCepQEAAFQau80gAwAAAFURARkAAAAwICADAAAABgRkAAAAwMCuHzUNVGd3e7jqssXeVeBamjRws3cJQB6MHVXfnXVvufpN/ab2LQQlUwGPEwEZKKM5ka2rzQcU3OwsOVaZHB3sXQYgibGjurDmWOQQee0PxULVkHMlW3Iov4URLLEAyshiYQqoMBaLRfv27atS/UM4RlVSlZ4bVUlVGzscHKvOPzFVrW+qGovFoj37/luu+yQgAyh3mZmZ9i4BQDXE2FE0+qZ42dnZ5bo/AjIAAABgQEAGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAAMCMgAAAGBAQAYAAAAMCMgAAACAAQEZAAAAMCAgAwAAAAYEZAAAAMCAgAwAAAAYONm7AACoTiwWi7Kzs6/r/pJ06dIlmUym8irrhmDsGxcXF/oHgN0QkAGgBKxWq06cOKE///zzuvfj5OSkP/74Qw4ODuVT3A0if9+4u7vL09OTfgJQ6QjIAFACueG4QYMGuuWWW8oc2qxWqzIzM1WrVi2CXz65fePi4qLMzEylpaVJkm6//XY7VwbgZkNABoBrsFgstnBcr16969qX1WpVTk6OXFxcCMj55PZNrVq1dMstt0iS0tLS1KBBA5ZbAKhUXKQHANeQu+Y4N7ShcuT29/Ws+QaAsiAgA0AJMeNbuehvAPZCQAaASuboyNALAFUZozQAlFWOpdR3cXBwKPsFemU4HgCg9LhIDwDKytEkfTJMOn2g4o9Vv6kUubxUd/H29lZgYKCWLVuWJ5DHxsZq0aJF+vrrr6+5j7Vr12rZsmVKTEwsdckAUF0RkAHgepw+IB3fZe8qirRp0yYtX75cw4cPL9P9e/bsqZ49e5ZzVUDhatWqZe8Sqiz6pnKxxAIoo5vibad4Sb/aGzhwoBYsWKDt27cXuc3XX3+tfv36yd/fX61bt9bjjz+u33//XdLV2eagoCBJ0rZt2xQUFKQlS5aoY8eOat++vcaNG6eMjAzbvhITExUWFqb77rtPERER2rx5c55aXn75ZQ0YMEBms1mhoaH69NNPK+bEq7CbYuwoA5PJpObNm98Q/WMt57GzSvbNDf73gRlkoKzWjJVO7bV3FRWnDC/po+rp0qWLrFar/vnPfyo+Pl7u7u552k+cOKEJEyZowYIFCgoKUnp6usaOHavFixfr//7v/wrs7+jRozp58qS++OILnTx5UgMGDNCKFSs0YsQIbdq0SdOnT9eSJUvUtm1bffvttxo3bpxWrlype+65R5K0cuVKvf3222rSpIkWL16sadOmKTg4WDVr1qyM7qgSnv1kl/574oK9y0AF6eTtoadDmlXe8it7uAn+PhCQgbI6c6hKv7QO5Hr22We1Y8cOTZ48WUuWLMnTVrduXSUmJuquu+5SRkaGTpw4odtuu00nT54scn9jxoyRi4uLGjVqJD8/P/3222+SpPfff1/9+/dXu3btJEmdO3dWUFCQPvroI/3nP/+RJIWEhKh58+aSpF69emnp0qU6c+aM/va3v1XEqVdJv566oL3Hztm7DFSQxh6uV7+p4suvUDwCMgDc4GrUqKH58+erV69eeuutt3TbbbfZ2pydnZWQkKCPPvpIDg4Oatq0qTIyMuTkVPSfBw8Pjzz3t1qtkq7OLv/444/68MMPbe0Wi0UdOnQo9L65x8jJybn+kwSAckRABoCbwF133aWZM2fqmWeeUUREhO329evX6/3339eHH36oRo0aSZJmzpypAwdK/9Kwp6enwsPDNWLECNttx44dk4uLy/WfAABUIi7SA4CbRLdu3RQZGamPP/7Ydtv58+fl6OgoFxcXWa1Wffvtt4qPjy/Txzs/+uijiomJ0e7duyVJycnJioiIUEJCQrmdAwBUBmaQAeB61G9arY4zZcoU7dq1S+fOXV0D26tXL/3888/q3r27TCaT7r77bg0ePFgffPCBsrKySrXvrl276uLFi5oyZYqOHTsmd3d3DRkyRAMHDiyX2gGgshCQAaCsciyVeyV3juXqh5OU0P79+wvcVrNmTcXHx9t+rlGjhubOnVtgu/Hjx0uSIiIibEsy/Pz8Cuxz9uzZeX42bp/fe++9l+dnLy+vQmsEAHtjiQUAlFUpwmouq9WqzMxM24VtFX08AEDpEZBRrtLS0nTx4sVKP+758+d19uzZSj8uUBa8awMAVG0E5JvUtGnTZDabZTab5ePjo2bNmtl+NpvNSkpKKvU+T58+rZCQkAoLqrl1rV27Vt27d8/T1qVLFx08eND2c1JSksxmsyRp2LBhWrp0aYXUBAAAbjysQb5JRUVFKSoqStLVj5JdtGiRvv766+va56VLlyp09njHjh2273v27JmnLT09Pc/Pvr6+tu2XL7+xP+0HAACUL2aQUUBoaGiBGdewsDCtXr26yLZVq1apR48ekqQePXooLi5O7dq107p162zbZWVlyc/PT1u2bNHChQs1YcIEPfvss2rbtq0efPBBrV+/XosXL9b999+v9u3b6/XXX7fdd/v27Ro0aJAeeOAB+fj4KCIiQjt37pR09ZO5JGn48OGKjo6WJH355ZeKiIhQ27ZtFRISonfeecf2svbkyZM1bdo0jRo1SmazWcHBwYqJiSnfTgQAANUWM8goICIiQrGxsRo1apQkac+ePUpNTVVoaKjS09MLbevWrZv8/f0VHByshIQEeXl5adeuXVqzZo3CwsIkSd98841cXV3VoUMHJSUlacOGDZo/f75mz56tl19+WZMmTdLgwYO1adMmbdq0SWPGjNEjjzyievXq6R//+IfGjx+v/v3769KlS5oyZYrmzp2rFStWaMOGDfL29lZ0dLT8/Py0detWPfXUU5o7d64efvhh7d+/X6NHj5YkDRkyRNLVWfNly5Zp0aJFWr16taKiohQSEqKGDRuWvKPqNZFyLpdfx1c1/+9txSwWS6nulpOTo1q1at1Q62wtFousVqvt63rk3v9693Mjyt83uf1tsVgK/B6W9vcSQPmrKs/D3DquVU9p6iUgo4Dw8HDNnz9fycnJ8vHxUXx8vLp27SpXV9di2/Ivc4iMjFTfvn116tQpeXh4KC4uThEREXJwcJAkNWnSRF27dpUkBQQEKDo6WqNGjZKzs7OCgoIkXf0ULk9PT3388cdq1KiRLl++rKNHj8rd3V3JycmF1h8bG6vg4GB169ZNktSiRQuNGDFC7733ni0g+/n5KSAgwFbn9OnTdfjw4dIF5EcWSaYb/F0FciwylfIcTSaTmjdvXkEFVa7sKxb9d99eZWdny8nJSZmZmeUW/DMzM8tlPzei3L65fPmysrOzlZKSYueKABRm//79VWosKyoXlAUBGQV4eHioY8eOWrNmjZo1a6aEhAQtXLjwmm35+fj4qHHjxkpMTFRYWJg2b96sqVOn2trd3d1t3zs6Xl3tc+utt+b5OScnRyaTSdu2bdPw4cN18eJFNWnSRE5OTkXOwJ05c0b33ntvntu8vLx09OjRPOeYy9nZ2Xas0ljw1QH9fqbqDAwV4VzmFZ3KuIFnyYvRpIGbFvQzq0WLFrp06ZL++OMP1apV67o/Njn3bd5q1apl+2cRV+XvG0dHRzk7O6tJkyYF+t1isZTrH0MApeft7W3vEiT9bzzw8fEpdlKnNOMGARmFioyM1IwZMxQQEKDatWurXbt2JWorbD+JiYlydnaWr6+vvLy8bG0lDQe7du3SzJkz9dFHH6lly5aSpLfeeku//fZbodvfcccdOnz4cJ7bjhw5kicUl4fNB09r+5Fz5bpPVD0mk0kmk0kODg62r+vl6OhYbvu6ERn72sHBwfYYAKhaqtrzsjzHCi7SQ6E6deoki8Wi1157rcCnYhXVVrNmTUlSRkaG7baePXsqJSVFq1atKvLTta7l/PnzcnR0tM0g7dy5UzExMXk+BrdGjRo6f/68pKuh/Ouvv9b69etlsVi0b98+RUdHKzIyskzHB4piySn9OmIHB4cyzx6X5XgAgNJjBhmFcnZ2Vs+ePRUTE6MlS5aUqK1+/frq0qWL+vbtq8mTJ6t///6qW7euAgMDtXXrVj388MNlqiUgIECPPfaYBgwYIIvFIi8vLw0ZMkRz587V6dOnVb9+ffXt21eTJk3SkCFDNHHiRC1YsECLFy/WlClTdNttt6l///4aPnz4dfUJkJ/J0UETPtqhQ2kZ1974OuUu+SiN3Jc/169fr7vvvjtP29tvv63Zs2dr7NixGjdunKZNmyZJtrd/BICbGQEZioiIKHR294477lBAQIA8PT1L1Obg4KBFixYVum337t3zrCEcN25cnm38/Py0f//+PLcZf548ebImT56cpz33gjtJmjp1ap71zcHBwQoODi5QiyTNnj27wG35jw2U1KG0DO09VnWX2tx2222Ki4vTpEmT8tweGxsrNzc3288EYwD4H5ZYoIBTp05p9+7devfdd9W/f/8St+V3/PhxbdmyRfHx8erXr19FlgygCGFhYVqzZk2ei1B3796trKysPO82kv+f0NyLa++77z5FRERo8+bNtraffvpJERER8vX1VZcuXTRr1ixduXKlck4IACoBARkFbNy4UQMHDlRAQECBWdji2vJbuXKlRo8erUGDBhV4VwkAlaNTp07Kzs7WDz/8YLtt9erV6t27d5H32bRpk6ZPn65p06bpxx9/1Lhx4zRu3Djbx7k/88wzGjhwoJKSkvT222/rs88+01dffVXh5wIAlYUlFiigT58+6tOnT6nb8pswYYImTJhQnqUBKCUnJyeFhYUpLi5ODzzwgC5duqQNGzYoISFB3377baH3ef/999W/f3/bO9R07txZQUFB+uijj/Sf//xHNWvW1Pr16+Xu7q527dpp06ZNtrdmBIAbASMaANzgIiIi9OWXXyojI0OfffaZ2rZtW+zbHh49elQxMTHy9fW1fX399dc6duyYJOndd99VgwYNNGPGDPn5+Wn06NE6ceJEZZ0OAFQ4ZpAB4AbXrFkz3X333Vq/fr3WrVunwYMHF7u9p6enwsPDNWLECNttx44dk4uLiy5fvqxDhw7p+eefl5OTk3777TdNnTpVL774ol577bWKPhUAqBQEZAC4Dk0auF17oypwnIiICL3zzjs6d+6cAgMDi9320Ucf1QsvvKAOHTqoVatWSk5O1vDhwzV69Gj169dP//znP/Xkk0/qiSeekIeHh5ycnHTbbbddV30AUJUQkAGgjCw51lK/N/H1Hs/kWLZP3+vRo4fmzJmjwYMHy8mp+KG/a9euunjxoqZMmaJjx47J3d1dQ4YM0cCBA+Xg4KAlS5Zozpw5WrZsmUwmkx588EH961//KlNdAFAVEZCBMrrbw1WXLfauAhWlJDO2ZQmrVqtVly5dkouLS6k/Ta+0xzO+v/dtt92mPXv25Gl/7733bN/nf3/wot4fXZLatm2rjz/+uFS14H8YO25sd9a95eo39Zvat5CKdCOf2/9DQAbKaE5k6yr3OfQoX9czY1sc43sS4+bD2HHjs+ZY5BC53N5lVKwci+R44/4e8y4WQBlZLEwBFcZisWjfvn03RP9URDgGboTnRkW4kcYOh3IOjlWyb27gcCwRkAFUgMzMTHuXAKAaYuwoGn1TuQjIAAAAgAEBGQBKyGq12ruEmwr9DcBeCMgAcA3Ozs6SpIsXL9q5kptLbn/n9j8AVBbexQIArsFkMsnd3V1paWmSpFtuuaXUb9GWy2q16vLly3J0dCzzPm5UuX3j4OCgzMxMpaWlyd3dnXd8AFDpCMgAUAKenp6SZAvJZWW1WpWdnS1nZ2cCcj75+8bd3d3W7wBQmQjIAFACDg4Ouv3229WgQQNlZ2eXeT8Wi0UpKSlq0qQJM6P5GPvGxcWF/gFgNwRkACgFk8l0XcEt931MCYAF0TcAqgou0gMAAAAMCMgAAACAAQEZAAAAMGANMlBKuR9eYLFYbGsm8T+5fULfFI7+KVpp+iZ3m+r0YSKMHcXjuVE0+qZ4Je2f0owbDtbqNLoAVUBWVpaSk5PtXQYAST4+PqpRo4a9yygRxg6gaijJuEFABkopJydHV65c4YMeADuyWq3KycmRk5OTHB2rx2pBxg7AvkozbhCQAQAAAIPq8W83AAAAUEkIyAAAAIABARkAAAAwICADAAAABgRkAAAAwICADAAAABgQkAEAAAADAjJQCmfOnNHo0aPl6+srPz8/zZo1S1euXLF3WXZ39uxZdenSRdu2bbPdtmvXLvXp00dms1lBQUFatWqVHSusfCkpKRo6dKjat2+vgIAAPfPMMzp79qwk+kaStmzZoj59+qht27YKCAjQzJkzdenSJUk3Zv8wdhTEuFE4xo7iVdrYYQVQYo8//rh10qRJ1osXL1oPHz5s7d69uzU6OtreZdlVUlKS9aGHHrI2bdrUunXrVqvVarX++eef1vbt21vff/99a3Z2tvWHH36wms1m665du+xcbeXIzMy0BgQEWBcsWGC9fPmy9ezZs9bhw4dbR44cedP3jdVqtZ45c8bq4+Nj/eSTT6wWi8V68uRJa48ePawLFiy4YfuHsSMvxo3CMXYUrzLHDmaQgRL6448/9OOPP+rpp59WrVq1dOedd2r06NH64IMP7F2a3cTFxelf//qXJk6cmOf2zz//XO7u7howYICcnJzk7++vsLCwm6avjh07pmbNmmnMmDGqUaOGbrvtNvXt21c//fTTTd83klS3bl398MMPioiIkIODg/78809dvnxZdevWvSH7h7EjL8aNojF2FK8yxw4CMlBCBw8elLu7uxo2bGi7rXHjxjp27JjOnTtnx8rs54EHHtAXX3yhbt265bn94MGDatq0aZ7bmjRpopSUlMosz27uvvtuLV++XCaTyXbbhg0b1KJFi5u+b3K5ublJkgIDAxUWFiYPDw9FRETckP3D2JEX40bRGDuurbLGDgIyUEIXLlxQrVq18tyW+/PFixftUZLdeXh4yMnJqcDthfWVi4vLTdlPVqtVr776qr755hv9+9//pm/y+fzzz/Xtt9/K0dFR48ePvyH7h7EjL8aNkmHsKF5Fjx0EZKCEbrnlFmVmZua5LfdnV1dXe5RUZdWqVct20USuS5cu3XT9lJGRofHjx2vdunV6//335e3tTd/k4+LiooYNG+rpp5/Wd999d0P2D2NHydyIj31ZMXZcW0WPHQRkoITuuece/fnnnzp9+rTttl9++UWenp6qXbu2HSurepo2baqDBw/mue3QoUO655577FRR5Tt8+LAiIyOVkZGh1atXy9vbWxJ9I0nbt29X165dlZWVZbstKytLzs7OatKkyQ3XP4wdJcNz4yrGjqJV5thBQAZK6O9//7vuu+8+vfjii8rIyNCRI0f0+uuvq3fv3vYurcrp0qWLTp8+rXfeeUfZ2dnaunWr1q1bp8jISHuXVin++usvDR48WG3bttWbb76punXr2tpu9r6RJG9vb126dEkvv/yysrKydPToUc2ZM0e9e/dWSEjIDdc/jB0lw3ODseNaKnPscLBardZyrh+4YZ0+fVpRUVHatm2bHB0dFR4ern/96195Lqi4WXl7eysmJkZ+fn6SpOTkZM2aNUsHDhxQ3bp1NXr0aEVERNi5ysrx9ttva/bs2apVq5YcHBzytO3YseOm7ptchw4d0osvvqjk5GTVrl1bYWFhtiv3b8T+YewoHONGXowd11ZZYwcBGQAAADBgiQUAAABgQEAGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAAMCMgC7SU1Nlbe3t1JTU4vdbtu2bfL29q6Umo4dOyaz2axjx45p6dKlGjZsWJ72tWvXqnv37pKkYcOGaenSpdfcp9lsVlJSUp77Aigbxg1UBj5JD4DdpKamKjg4WF999ZW8vLyK3G7btm0aNGiQ9u/fX4nVAaiKGDdQGZhBBlAleHt7a9u2bbafY2NjFRQUVGA7q9Wqf//73+revbtOnjxZ6HYDBw7UwoULJUmTJ09WVFSURo4cKbPZrC5dumjLli2aOXOm2rVrp4CAAK1atcp236+//lr9+vWTv7+/Wrdurccff1y///677dhvvPGGwsLC5Ovrq3bt2mnSpEm6dOmS7Vjjx49XaGioOnTooMOHD2v79u0aNGiQHnjgAfn4+CgiIkI7d+4s594Dbk6MG6goBGQA1UZOTo6mTJmi//73v3rvvffUsGHDEt3vk08+0fDhw/Xzzz+rVatWevLJJ/X3v/9dW7Zs0ciRIxUVFaWsrCydOHFCEyZM0IgRI7RlyxZt3LhRVqtVixcvliStX79eMTExWrhwoZKSkvTRRx9p8+bNWrdune1Y3333nRYsWKDPP/9cDRo00D/+8Q+FhITo22+/1bZt23TXXXdp7ty5FdI/AApi3EBZEJABVBvPPvusvvvuO8XExKhu3bolvl+HDh3k6+srR0dHdejQQbfccosGDhwoJycnde7cWVlZWTp9+rTq1q2rxMREBQUFKSMjQydOnNBtt92mkydPSpIefPBBrV69Wn//+9919uxZpaeny93d3dYuSW3atFHTpk1Vp04dOTs76+OPP9Zjjz2mrKwsHT16tMD2ACoW4wbKwsneBQBASZ04cUIXLlzQt99+q27dupX4fu7u7rbvTSaT6tSpY/vZwcFB0tVZJmdnZyUkJOijjz6Sg4ODmjZtqoyMDDk5XR0qrVarXn31VX3zzTeqW7eu7r33XmVnZ8t4KUeDBg3yHGvbtm0aPny4Ll68qCZNmsjJyUlc+gFUHsYNlAUBGUCV4OjoqOzsbNvP6enpBbZ58803tXLlSs2YMUO+vr5q0KCBHB0dlZWVlWe7/PfN/WN2LevXr9f777+vDz/8UI0aNZIkzZw5UwcOHJAkzZs3T8eOHdPXX38tNzc3SVJYWFiRx9q1a5dmzpypjz76SC1btpQkvfXWW/rtt99KVA+A4jFuoKKwxAJAldC4cWNt2LBBV65c0eHDh7V69eoC29SoUUMDBgxQ06ZN9e9//9t2v9OnT2vr1q2yWq1as2aNfvnllzLVcP78eTk6OsrFxUVWq1Xffvut4uPjbX+AMzIyVLNmTZlMJl2+fFlvvfWWDhw4kOcPdFH7k6SdO3cqJiamwB9mAGXDuIGKQkAGUCVMnz5de/fuVfv27fXUU0+pd+/ehW7n4OCgF1980Xaxi4+Pj/7xj39o8uTJat++vbZu3aqQkJAy1dCrVy/df//96tGjhzp06KDXX39dTzzxhH777TdlZWXpqaee0uXLl3X//ferc+fO2r59uyIjI20zRfkFBAToscce04ABA+Tr66vnn39eQ4YM0dmzZ3X69Oky1Qjgfxg3UFF4H2QAAADAgBlkAAAAwICADAAAABgQkAEAAAADAjIAAABgQEAGAAAADAjIAAAAgAEBGQAAADAgIAMAAAAGBGQAAADAgIAMAAAAGBCQAQAAAIP/H6MQFOSIVie5AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 2x2 kaaviomatriisi\n", "# sharex- ja sharey-lisäparametreilla asetan kaavioille yhteiset akselit\n", "fig, axs = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)\n", "\n", "fig.suptitle('Miesten ja naisten vertailua', fontsize=12) # Kuvion (figure) otsikko\n", "\n", "df3['Mies'].plot(kind='barh', ax=axs[0, 0]) # Vasemman yläkulman kaavio\n", "df3['Nainen'].plot(kind='barh', ax=axs[0, 1], color='C1') # Oikean yläkulman kaavio; värinä väripaletin toinen väri (C1)\n", "df3.plot(kind='barh', ax=axs[1, 0], legend='reverse', xlabel='lukumäärä') # Vasemman alakulman kaavio\n", "df3.plot(kind='barh', ax=axs[1, 1], legend=False, xlabel='lukumäärä', stacked=True) # Oikean alakulman kaavio\n", "\n", "fig.savefig('testi2.png', bbox_inches='tight')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lisätietoa\n", "\n", "Osaat paljon enemmän, jos käyt läpi kahdeksanosaisen muistio-sarjani matplotlibin perusteista. Aloita tästä:\n", "\n", "https://nbviewer.jupyter.org/github/taanila/kaaviot/blob/master/matplotlib1.ipynb" ] } ], "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.11.4" } }, "nbformat": 4, "nbformat_minor": 4 }