{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "bc9088bd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Päivitetty 2025-11-30 / Aki Taanila\n" ] } ], "source": [ "from datetime import datetime\n", "print(f'Päivitetty {datetime.now().date()} / Aki Taanila')" ] }, { "cell_type": "markdown", "id": "7c925e54", "metadata": {}, "source": [ "## Boxplot - tilastollisia tunnuslukuja grafiikkana\n", "\n", "**Boxplot** havainnollistaa määrällisen muuttujan arvojen jakaumaa tilastollisten tunnuslukujen avulla. Sillä on monta nimeä kuten box & whisker, ruutu- ja janakaavio, laatikko- ja viiksikaavio, tai laatikko- ja janakaavio. Kaavio esittää viiden luvun yhteenvedon:\n", "\n", "- pienin arvo\n", "- alaneljännes/alakvartiili (arvo, jota pienmpiä on neljäsosa arvoista)\n", "- mediaani (arvo, jota pienempiä on puolet arvoista)\n", "- yläneljännes/yläkvartiili (arvo, jota pienempiä on kolme neljäsosaa arvoista)\n", "- suurin arvo\n", "\n", "Lisäksi kaaviossa esitetään muista arvoista selvästi poikkeavat arvot erillisinä pisteinä, jotta niihin osataan kiinnittää huomiota.\n", "\n", "Kaavio koostuu laatikosta, jonka reunat vastaavat alaneljännestä ja yläneljännestä. Laatikon sisään on merkitty viivalla mediaanin sijainti. Laatikon päistä lähtee janat, joiden päätepisteet vastaavat pienintä ja suurinta arvoa paitsi silloin kun selvästi muista poikkeavia arvoja on merkitty erillisillä pisteillä. Oletuksena erillisinä pisteinä piirretään havainnot, jotka ovat yli 1,5 kvartiilivälin (yläneljännes-alaneljännes) päässä laatikon reunasta.\n", "\n", "Seabornin boxplotista löydät lisätietoa https://seaborn.pydata.org/generated/seaborn.boxplot.html.\n", "\n", "### Tuonnit ja alkuvalmistelut\n", "\n", "- Grafiikan tyylimäärittelyssä voit käyttää **'whitegrid'** sijasta **'white'**, **'dark'**, **'darkgrid'** tai **'ticks'**. Voit myös jättää tyylimäärittelyn tekemättä.\n", "- **MultipleLocator** auttaa muuttamaan akselin asteikon jaotusta." ] }, { "cell_type": "code", "execution_count": 2, "id": "b7193ff8", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "sns.set_style('whitegrid')\n", "from matplotlib.ticker import MultipleLocator" ] }, { "cell_type": "markdown", "id": "028c890d-436a-4039-94e9-930c5042a9be", "metadata": {}, "source": [ "### Datan avaaminen\n", "\n", "Seaborn-paketin esimerkkidata **penguins** sisältää tietoja pingviinilajeista eri saarilla." ] }, { "cell_type": "code", "execution_count": 3, "id": "1fbd3e5d-e7d6-40ea-83cf-ceb5beddb5ee", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
0AdelieTorgersen39.118.7181.03750.0Male
1AdelieTorgersen39.517.4186.03800.0Female
2AdelieTorgersen40.318.0195.03250.0Female
3AdelieTorgersenNaNNaNNaNNaNNaN
4AdelieTorgersen36.719.3193.03450.0Female
........................
339GentooBiscoeNaNNaNNaNNaNNaN
340GentooBiscoe46.814.3215.04850.0Female
341GentooBiscoe50.415.7222.05750.0Male
342GentooBiscoe45.214.8212.05200.0Female
343GentooBiscoe49.916.1213.05400.0Male
\n", "

344 rows × 7 columns

\n", "
" ], "text/plain": [ " species island bill_length_mm bill_depth_mm flipper_length_mm \\\n", "0 Adelie Torgersen 39.1 18.7 181.0 \n", "1 Adelie Torgersen 39.5 17.4 186.0 \n", "2 Adelie Torgersen 40.3 18.0 195.0 \n", "3 Adelie Torgersen NaN NaN NaN \n", "4 Adelie Torgersen 36.7 19.3 193.0 \n", ".. ... ... ... ... ... \n", "339 Gentoo Biscoe NaN NaN NaN \n", "340 Gentoo Biscoe 46.8 14.3 215.0 \n", "341 Gentoo Biscoe 50.4 15.7 222.0 \n", "342 Gentoo Biscoe 45.2 14.8 212.0 \n", "343 Gentoo Biscoe 49.9 16.1 213.0 \n", "\n", " body_mass_g sex \n", "0 3750.0 Male \n", "1 3800.0 Female \n", "2 3250.0 Female \n", "3 NaN NaN \n", "4 3450.0 Female \n", ".. ... ... \n", "339 NaN NaN \n", "340 4850.0 Female \n", "341 5750.0 Male \n", "342 5200.0 Female \n", "343 5400.0 Male \n", "\n", "[344 rows x 7 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "penguins = sns.load_dataset('penguins')\n", "penguins" ] }, { "cell_type": "markdown", "id": "e3370946", "metadata": {}, "source": [ "### Yhden muuttujan boxplot\n", "\n", "- Parametri `showmeans=True` tuo keskiarvon kaavioon (pieni kolmio). Keskiarvoa ja mediaania vertaamalla voit tehdä päätelmiä jakauman mahdollisesta vinoudesta.\n", "- **plt** viittaa **matplotlib.pyplot**-pakettiin, joka sisältää oikotien moniin muotoiluihin. Lisätietoa https://matplotlib.org/stable/api/pyplot_summary.html.\n", "- Kaikkea ei voi tehdä **plt**:n kautta, vaan vaativammassa muotoilussa viitataan suoraan kaavioon (**Axes**-luokan olio) ja sen ominaisuuksiin. Tätä varten kaavio sijoitetaan muuttujan arvoksi. Seuraavassa solussa muuttujan nimeksi on annettu **ax**. Lisätietoa **Axes**-luokasta https://matplotlib.org/stable/api/axes_api.html.\n", "- **MultipleLocator** säätää arvoakselin jaotuksen viiden välein." ] }, { "cell_type": "code", "execution_count": 4, "id": "d5d971bd", "metadata": {}, "outputs": [ { "data": { "image/png": "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WrRokXr27OmemwEDBqh79+6SpNtuu02ffPKJUlJSdMcdd5x3POnp6Ro1apSaNGki6fRXeNHR0Vq9erWqV6+uWbNm6fDhw/r444/dsdWiRQv17t1br7zyijp06CBf3//1/bx58zRmzBglJCTo/vvvd2//7bff9Mgjj2jgwIHubVWqVFGXLl20adMmVapU6S8/juHDh7sPUzdu3Fh33nmnpk+frokTJ3rsGxwc7J7/W265RVWqVDnv/V6KjRs3qmTJkurbt697XZQvX15bt26V4zgeL6QXc7H1csMNN7g/lhebNm1yB0CdOnVyXWj7/PPPKyoqSvfee2+uCwfPJzExUb/88otef/31PI8DkDgygEv01VdfqU6dOu63pk2b6sknn1SdOnU0bty4Cz7Jnn2++Nprr1V6erokafPmzTp58qTatm3rsU+HDh083u/cubNOnDihVatWSTodFL/++qs6d+6c58dw5gtRzjgkucdypvT0dG3ZskUtWrRwh1BWVpauv/56Va9eXV988YXH/lFRUe6/BwQEKDg4WCdOnLjomM6cm5zx5NwuNTVVUVFRuY66dOrUSQcOHNBPP/3k3rZq1SolJCTotttuU48ePTz2j4uLU2xsrI4dO6atW7fqgw8+UHJysqTTX1n+1cfh5+en9u3bu98vVaqUmjdvro0bN17s4Re4Bg0a6OTJk+rYsaPGjx+vjRs3qlmzZoqJiclXCEgXXy8ul8u9Ls71dvZ3C1SpUkVvvfWWxo4dq+PHj6tr167u02XvvfeeNm7cqISEhDyNzXEcJSYm6q233lK/fv1055135uuxARwZwCWpU6eO+4nKx8dHJUuW1HXXXaegoKCL3jbnK/kcvr6+7ifKnPPvZ1+4V7FiRY/3r7/+et1666366KOPdM899+iDDz5Q5cqVVb9+/Tw/hrPHkfPi4HK5cu179OhRuVwuzZgx45znzc8+GlGqVCmP9898jHkdU85X+Tm3S0tLO+dXzjlzc/ToUfe2b775RtHR0Vq1apVWrlzpcerk119/1QsvvKD169fL399fN910k/vc+9ljvJTHERwcrBIlSnhsq1ChwnlPv1xOUVFRmj59uv75z38qKSlJb7zxhkJCQtS3b189/PDD+bqvi62XYcOG5brG40xz5sxRo0aN3O+HhoYqNDRU0ukjTHfffbf7Wo7Ro0dr6NChqlCh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ABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADG+Xt7ACiefE+meXsIxYpv+hGPP61iXQGXBzGAAlWuXDmVCCgp/bTa20MplgJ/XuPtIXhdiYCSKleunLeHARQrxAAKVGhoqN5+a47S0vL+FVx2drZ27NihmjVrys/P7zKOrnizMo/lypVTaGiot4cBFCvEAApcaGhovp6ss7OzdeLEiWL/Ina5MY8ALhUXEAIAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYJx/XnZyHEeSlJ2dfVkHc6XJmQ/m5a9hHgsG81gwmMeCwTwWjL86jzm3y3kdPx8f52J7SMrIyNDWrVsvaSAAAMC76tatq4CAgPN+PE8x4HK5lJWVJV9fX/n4+BToAAEAwOXhOI5cLpf8/f3l63v+KwPyFAMAAKD44gJCAACMIwYAADCOGAAAwDhiAAAA44gBAACMIwYAADCOGAAAwDhiII/WrVun7t2769Zbb9Xtt9+ukSNH6uTJk5KkF198UeHh4YqKinK/zZ8/38sjLrqys7PVq1cvxcXFubdt2bJF3bt3V1RUlFq1aqWFCxd6cYRXhnPNI2sxf5YtW6batWt7zFdsbKwk1mR+XGgeWZN5d+TIET3zzDNq1KiRGjRooAEDBuj333+XVAjr0cFFHTp0yKlbt66zaNEiJzs729m/f7/ToUMHZ8KECY7jOM59993nLF682MujvHK89tprTq1atZyhQ4c6juM4R44ccRo2bOi8/fbbTmZmprN27VonKirK2bJli5dHWrSdPY+Ow1rMr5dfftmJi4vLtZ01mT/nm0fHYU3mx4MPPugMHDjQSUtLc44dO+bExMQ4/fr1K5T1mKdfVGRdcHCw1q5dq6CgIDmOoyNHjujUqVMKDg5WRkaGduzYofDwcG8P84qwbt06LV++XHfffbd72/Lly1W+fHn17NlTktSkSRN17NhRycnJioiI8NZQi7RzzSNrMf+2bt2qdu3a5drOmsyf880jazLvtm3bpi1btrhfayRp5MiROnDgQKGsR04T5FHOJ6dFixbq2LGjQkJC1KVLF23fvl1ZWVmaOHGimjZtqjZt2mj69OlyuVxeHnHRc+jQIcXHx+vVV19VYGCge/v333+vmjVreuxbo0YNbd++vbCHeEU43zyyFvPH5XLpm2++UUpKiqKjo9W8eXM9//zzSktLY03mw4XmkTWZd19//bVq1KihBQsW6K677lKzZs2UmJiokJCQQlmPxEA+LV++XGvWrJGvr68GDRqkY8eOqWHDhurVq5dWr16tMWPG6K233tKbb77p7aEWKS6XS7GxserTp49q1arl8bE///zT40VNkkqVKqUTJ04U5hCvCBeaR9Zi/hw+fFi1a9dWmzZttGzZMs2bN087d+5UbGwsazIfLjSPrMm8S0tL03fffaedO3fqvffe05IlS7R//34NHTq0UNYjMZBPpUqVUmhoqGJjY/XZZ58pPDxcc+bMUcOGDVWiRAlFRETo4Ycf1rJly7w91CJl2rRpCggIUK9evXJ9LDAw0H0xZo6TJ0+qTJkyhTW8K8aF5vH2229nLeZDxYoVlZycrG7duikwMFCVKlVSbGys1qxZI8dxWJN5dKF5rFevHmsyj3J+vXB8fLyCgoJUsWJFDR48WKtXry6U9UgM5MGmTZvUtm1bZWRkuLdlZGSoRIkS+uKLLzRv3jyP/TMyMlSqVKnCHmaR9v777ys1NVX169dX/fr19eGHH+rDDz9U/fr1VbNmTX3//fce+//www+6+eabvTTaoutC87hixQrWYj5s375dY8eOlXPGL27NyMiQr6+vIiIiWJN5dKF5XLNmDWsyj2rUqCGXy6XMzEz3tpzTKbfccsvlX48FdiliMXb8+HGnRYsWzujRo51Tp045u3btcrp16+a8+OKLzvLly52IiAhn7dq1jsvlcjZt2uQ0atTIWbJkibeHXaQNHTrUfRX84cOHnfr16zuzZs1yMjIynHXr1jlRUVHOunXrvDzKou/MeWQt5s/evXudyMhIZ/r06U5mZqaze/du5/7773eGDRvGmsyHC80jazLvMjIynLvuusv5+9//7hw/ftw5dOiQ89BDDzkDBw4slPXo4zhn5BzO64cfftDo0aO1detWXXXVVerYsaMGDhyogIAAzZs3T7NmzdL+/ftVsWJF9enTx33VJ84t53vjX375ZUmnr0YeNWqUduzYoeDgYA0YMEBdunTx5hCvCGfPI2sxf1JTUzVu3Djt2LFDJUuWVPv27RUbG6uSJUuyJvPhQvPImsy7/fv36+WXX9ZXX32lU6dOqVWrVoqPj1fZsmUv+3okBgAAMI5rBgAAMI4YAADAOGIAAADjiAEAAIwjBgAAMI4YAADAOGIAAADjiAEAAIwjBgAAMM7f2wMAcHns2rVLrVu3VmJioiZMmKA//vhD7dq1U9euXTVixAj99ttvioiI0Pjx4/XKK6+odOnS2r17t1JTU1WxYkWNGDFCK1as0NKlSxUQEKDBgwere/fu3n5YAC4DjgwAxdzq1au1bNkyLViwQO+//75GjhypGTNm6NNPP9XevXv1zjvvSJIWLVqkvn37auPGjYqIiNCjjz6qG2+8UevWrVP//v01YsQIj9/cCaD4IAaAYu6RRx5RYGCgatasqZCQEN13330KDQ1VcHCwIiMjtXv3bklS48aNVb9+ffn6+qpx48YqXbq0evXqJX9/f0VHRysjI0MHDx708qMBcDkQA0AxV758efff/fz8VLZsWff7vr6+7t9Df6H9fHx8JP3v96sDKF6IAaCYy3khL6j9ABQ/xAAAAMYRAwAAGOfj5JwwBAAAJnFkAAAA44gBAACMIwYAADCOGAAAwDhiAAAA44gBAACMIwYAADCOGAAAwDhiAAAA44gBAACMIwYAADCOGAAAwLj/B6z7HmSVESVJAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = sns.boxplot(penguins, x='bill_length_mm', showmeans=True)\n", "plt.title(f'Pingviinien nokan pituus, n={penguins['bill_length_mm'].count()}')\n", "plt.xlabel('mm')\n", "ax.xaxis.set_major_locator(MultipleLocator(5))" ] }, { "cell_type": "markdown", "id": "6acefae7", "metadata": {}, "source": [ "### Useamman muuttujan boxplot\n", "\n", "Voit esittää useamman muuttujan boxplotin antamalla muuttujien listan parametrina.\n", "\n", "Vaaka-akselin nimet (**xticks**) on seuraavassa korvattu suomenkielisillä nimillä. Ennen korvaamista on tärkeää katsoa kaaviosta oletusnimien järjestys, jotta korvaaminen osataan tehdä oikeassa järjestyksessä. **plt.xticks**-funktion ensimmäinen parametri on viittaus korvattavien nimien numeroihin [0, 1] ja toinen parametri sisältää korvaavien nimien listan." ] }, { "cell_type": "code", "execution_count": 5, "id": "cab98c69", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGwCAYAAACOzu5xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQqtJREFUeJzt3XlcFuX+//E3q6AYSJqmFWUGHgUSF3CpSMusk4hr2kEqC5fSbBNFJZeI0FOaW+aCZaapR0PTXDLN6pSau5JHQ+sckyiUUEIBkfue3x9+uX/duYEKNwOv5+PBQ++Za2Y+c6/v+5pr5nYyDMMQAACACTg7ugAAAICSIrgAAADTILgAAADTILgAAADTILgAAADTILgAAADTILgAAADTILgAAADTILgAwEVwbU6gYiK4wPSio6MVEBBg9xcYGKj7779f48ePV05Ojl3b6Ojocq8xPT1dAQEBSklJkSSlpKQoICBA6enpJV7H1SxTEQQEBGj69OmOLuOSvvvuOwUEBOi7776TJP32228aOHCgfvnlFwdXdt5f67tacXFx6tChw3WqCnAcV0cXAFwPTZo00dixY223z507pwMHDmjy5Mk6ePCgFi9eLCcnJ7s25emmm27S0qVLddttt0mS7r//fi1dulQ33XRTiddxNcvgypo2baqlS5eqUaNGkqQtW7boyy+/1Kuvvurgys77a31AVUdwQaXg5eWlZs2a2U1r1aqVzpw5o2nTpmnfvn1q1qyZw9783d3d7erz9fWVr69vqdZxNcvgyi723KlIKnp9QHnjUBEqtcDAQElSRkaGpAsPFQUEBGjRokUaPXq0QkNDFRISoqFDhyorK8tuPfPmzdMDDzyg4OBg9enTR1988YWt+3737t0KCAjQxo0b7Zb58ccfFRAQoHXr1l3xUFFcXJyeeuopffzxx+rUqZMCAwPVpUsXffXVV7b1XexQ0c6dO9W3b1/dfffdCg0N1YgRI5SdnW23TJMmTbRv3z717t1bQUFBuv/++zV37tzL3m/Tp09Xx44d9eWXXyoiIkKBgYHq1KmTVqxYYdfu+PHjGjlypMLDwxUcHKyePXtq06ZNl1331KlT1bhxYy1fvtw2bdmyZerevbuaNWum4OBgRUZGau3atddlPzp06KDNmzfr4Ycf1t13361evXpp69attjZ/PhSTkpKikSNHSpIeeOABxcXFSZI6dOhg+/+fa/rz4zF9+nQFBARcUMNfD5WtXbtWXbp0UXBwsFq3bq1hw4bp+PHjl9yHix0q2rhxo/7xj38oJCREgYGBevjhh7Vw4cLL3hcXs2zZMj366KO2Q6vTp09XUVGRJGn16tUKCAjQoUOH7Jb56quvFBAQoP3790uSTp06pTFjxqht27YKCgrSY489Znf/Dh06VOHh4bJarXbrGTNmjB544AEZhqHs7GwNGzZM7dq1U1BQkCIjI7Vy5cpS7w+qBoILKrX//ve/kqRbb731km3efvttWa1WTZ48WcOHD9eXX36pN954wzZ/xowZeuutt/TII49o5syZuvvuu/XSSy/Z5jdv3lx+fn52H7TS+Tf+mjVrlnhcwffff6958+Zp6NCheuedd+Tq6qqhQ4fajdH5sx07duipp56Sh4eHpkyZolGjRmn79u164oknVFBQYGtntVr14osv6u9//7vmzJmjFi1a6K233tK///3vy9Zz4sQJvfbaa3riiSc0Z84c3XLLLYqLi9OPP/4oScrKylLPnj21fft2vfTSS5o+fboaNGigwYMHa9WqVRdd57x58/Tuu+/qtddeU8+ePSVJixYtsn2IzZ49W2+++abc3NwUGxtrC5zXsh/Z2dkaMWKE/vGPf2jq1Kny9PRU//799f3331/Q9v7779ezzz4r6fzj/txzz1123aW1a9cuDRs2TA899JDmzp2rkSNHatu2bXrllVdKvI4vv/xSgwcPVtOmTTVz5kzb/Z6QkKDdu3eXeD2zZ8/Wq6++qjZt2mjWrFmKiorS3LlzNWbMGElSx44dVaNGDa1Zs8ZuuU8//VR33HGHgoODdfbsWT355JPatGmTXnrpJc2YMUP16tVTTEyMLbz07NlTv/32m13wKiws1Lp169StWzc5OTkpNjZWR44c0fjx4zVnzhw1adJEI0aMuOZxPaicOFSESsEwDNs3RUnKycnR9u3b9e6776pZs2a2npeL8ff3V1JSku32/v37tX79eklSXl6e5s6dq6ioKA0bNkySdM899yg/P19Lly61LdOlSxfNmzdP+fn58vT0lCStWbNGDz/8sKpVq1aifcjNzVVKSoptHEz16tXVt29fbdu2TZ06dbqg/aRJk3THHXdo9uzZcnFxkSTdfffdevTRR/Xxxx8rKirKdt8899xz6tWrlySpRYsW+vzzz/Xll1/q3nvvvWQ9+fn5SkxMVJs2bSRJt99+u9q3b6+vvvpKd955p95//31lZ2dr3bp1tmAYHh6up556Sv/85z/VuXNnOTv//+9GS5Ys0Ztvvqnx48frscces00/duyYnn76aQ0ePNg27ZZbblH37t21e/du1a9f/5r3Y9y4cerataskqXXr1nrwwQc1Z84cTZs2za6tr6+v7f7/29/+pltuueWS670au3btUrVq1dS/f3/b88LHx0epqakyDENOTk5XXMeRI0fUtWtXjR492jYtJCREYWFh2rFjh5o3b37FdeTm5urdd99V7969FR8fL+n889rHx0fx8fHq16+f7rrrLnXq1Elr1661BauCggJt2rRJ/fv3lyR98sknOnTokP71r3/p7rvvliTdd999io6O1ltvvaWPP/5Y99xzj+rVq6eVK1fanksbN25Ubm6uunXrJknavn27nnvuOT344IOSpLCwMPn4+Nie18Cf0eOCSmHHjh1q2rSp7a9t27Z6+eWX1bRpU02ePPmyHwh/HT9Qr1495efnS5L27t2rgoICPfzww3ZtOnfubHc7MjJSeXl52rx5s6Tz4efnn39WZGRkiffhzx+axXVIstXyZ/n5+dq3b5/Cw8Ntoa2oqEi33nqr7rzzTn377bd27UNCQmz/d3d3l6+vr/Ly8q5Y05/vm+J6ipfbvn27QkJCLujN6tKli06cOKGffvrJNm3z5s0aP368WrRood69e9u1j4uLU2xsrHJzc5WamqrVq1dr0aJFks4Psr7W/XBxcdGjjz5qu+3h4aH77rtPu3btutLuX3etWrVSQUGBIiIi9Pbbb2vXrl265557NGTIkBKFFkmKiYnRxIkTlZeXp0OHDmndunWaM2eOpAvvr0vZs2eP8vPz1aFDB9tzp6ioyNY7WPz86dKli9LT07Vv3z5J0hdffKG8vDxFRERIkrZu3ao6deqoadOmtnVYLBa1b99e33//vXJycuTs7Kxu3bppw4YNtufyihUrFBYWpgYNGkg6H1SmT5+uF154QSkpKbZespYtW5bwnkVVQo8LKoWmTZtq/PjxkiQnJydVq1ZNN998s7y8vK64bHEPSTFnZ2fbNTyKx4v8dVBs7dq17W7feuutat68udasWaO///3vWr16tRo0aFCqN96/1lH8QfbXsQGS9Mcff8hqtWru3LkXHefx114eDw8Pu9t/3seS1lTce1K8XE5OzkV7JIrvmz/++MM27cCBA2rfvr02b96sL774wu7w2c8//6wxY8Zo27ZtcnV1VcOGDW1jRf5a49Xsh6+vr9zc3Oym3XjjjZc8BFeWQkJCNGfOHM2fP1/z5s3TrFmzVKdOHfXv319PPvlkidaRnZ2tsWPHauPGjXJycpKfn59atGghqeTXnjl16pQkacCAARedXzzmpnXr1rr55pu1Zs0a3X333fr000/VsmVL2+N+6tQpnThxQk2bNr3oek6cOCFvb2/16NFDs2bN0oYNG9S2bVt9++23dr2cb7/9tmbNmqV169Zp/fr1cnZ2Vtu2bTVu3LjLHuZF1URwQaVQo0YNBQUFXff1FvcyZGdnq2HDhrbpfx4AWywyMlKJiYnKzc3VunXr1KNHjxJ/iy6tGjVqyMnJSU899ZRdb0Kxv4agsuDt7X3BIGbp/IeVJNWqVcs2rXfv3ho/fryioqI0btw4hYaGysvLS1arVQMGDJCbm5v+9a9/qUmTJnJ1ddWRI0cuOU6mtE6dOnXBYZisrCzdeOONpVqPxWKxu/3Xnp7i9VssFtshjjNnzlywnnvvvVf33nuv8vPztW3bNi1YsEBvvPGGmjVrZjvccjnDhg3Tjz/+qPfff1/NmzeXu7u78vPztWzZshLvyw033CBJeuutt3T77bdfML84fDo5OSkiIkKffPKJBg8erK+//trukgI1a9bU7bffrrfeeuui2ykOOLfeeqtCQ0O1bt065ebmytPTUw899JDdemJjYxUbG6uffvpJmzZt0syZMzV+/HglJyeXeL9QNXCoCLiMxo0bq2bNmtqwYYPd9M8+++yCto888oik82fNnDhxQl26dCmzury8vNSkSRP99NNPCgoKsv3dddddmjFjRrkMamzVqpX27NmjY8eO2U1ftWqV6tSpIz8/P9u0OnXqyMnJSePGjVN2drbefPNNSdLJkyf13//+Vz179lRwcLBcXc9/l/r6668lXby3qbTOnTtnN4C3oKBAX3/9tW28xV/9eVxOMS8vL/3222920/46ELa4d+/XX3+9ZJuJEyeqZ8+eMgxDnp6eat++vUaMGHHBcpeza9cuderUSa1bt5a7u7uk0t9fd999t9zc3JSZmWn3/HFzc9OkSZPszlyLjIxUZmampk+fLicnJ7vDpqGhofr1119144032q1n69atSk5Othuj0rNnT23ZskWrVq3SI488YgvXv/zyi8LDw23jyho2bKj+/furbdu2F9zngESPC3BZXl5eiomJ0bRp0+Tp6anQ0FBt375dixcvlmT/Ieft7a327dvro48+UlBQkO68884yre3ll1/WgAED9Morr6hLly6yWCx67733tG/fPtuZMWWpX79+WrVqlfr166chQ4aoVq1aWrlypbZt26Y33njjogHA399fTz75pObNm6fOnTurVatWatCggRYtWqR69erphhtu0DfffKMPPvhA0sXH91yNUaNG6cUXX9SNN96oefPmKS8v75L3UXFvxOeff6777rtPd955p9q3b6/Zs2dr1qxZatasmb788ku7U36l8wOTk5KS9Oqrr6p///767bffNGPGDNWoUcPWpk2bNnr//fcVFxenLl266Ny5c0pOTpaPj49at25don0JDg7W6tWr1bRpU9WrV0979uzR7Nmz5eTkVOL7q1atWoqJidHUqVN1+vRphYWFKTMzU1OnTpWTk5MaN25sa9uoUSM1bdpUH330kTp27KiaNWva5nXv3l0LFy5Uv379NGjQIN18883asmWL5s6dq759+9odouvUqZMSEhK0b98+u1PLGzRooHr16un111/X6dOnddttt+n777/XV199pYEDB5Zof1C10OMCXMHAgQM1ZMgQrVy5UgMHDtTOnTttZxhVr17drm1xgCjL3pZi99xzj+bNm6fffvtNQ4cO1fDhw+Xi4qL333+/XC5YVqdOHS1evFiBgYFKTEzUCy+8oF9//VUzZ85Ujx49LrnckCFDVL9+fcXHx+vs2bOaOXOm6tatq7i4OL344ovau3ev3n33XTVs2FA7d+68LrWOGzdOM2fO1EsvvSR3d3ctXrzYrkfoz8LCwtS2bVtNmjRJEydOlHT+OdCrVy+99957evbZZ5WZmanExES75e644w5NnDhRGRkZGjBggD744AMlJCTYXen4vvvu01tvvaXDhw9ryJAhevnll+Xp6akFCxbIx8enRPsyYcIE3X333UpISNDgwYO1ceNGjR8/Xvfcc0+p7q8XX3xRcXFx+vzzz9W/f3+9+eabatGihRYuXGgXTqTzvS4Xe15Xr15dixYtUosWLfTmm2+qf//+2rBhg1555RXb9XCKVatWTW3atNHtt99+wZlPM2bM0L333qupU6fq6aef1uLFizVkyBC7M82AYk4GvyQGXFJRUZE+/fRThYWF6eabb7ZNX7RokV5//XV99913tm/oqHimT5+uGTNm6IcffnB0KVft66+/Vv/+/bVs2TIFBwc7upyrVlBQoPDwcA0cOFBPP/20o8uBiXGoCLgMV1dXzZ07Vx988IGeffZZ1apVS4cOHdLUqVPVtWtXQgvK1Oeff67Vq1fL2dn5ul9Tprz88ssvWrFihbZs2SJJtuvwAFeL4AJcwaxZszR58mSNGzdOf/zxh+rXr6+nnnqK4+8oU4WFhRo3bpysVqtefvll0/5OlbOzsz788ENVr15dkydPvuAwFFBaHCoCAACmweBcAABgGgQXAABgGgQXAABgGpVucK7ValVRUZGcnZ3L7HLrAADg+jIMQ1arVa6urhe9gGWxShdcioqKlJqa6ugyAADAVQgKCrL9nMXFVLrgUpzSgoKC7H4nAwAAVFwWi0WpqamX7W2RKmFwKT485OLiQnABAMBkrjTMg8G5AADANAguAADANAguAADANAguAADANAguAADANAguAADANAguAADANBwSXE6dOqXhw4crLCxMrVq10nPPPafjx49Lkvbt26devXopJCREHTp00LJlyxxRIgAAqIAcElyef/555eXl6fPPP9fmzZvl4uKiV199VTk5ORowYIC6du2qHTt2KDExUUlJSdq/f78jygQAABVMuV859/vvv9e+ffu0ZcsWeXl5SZISEhJ04sQJbdiwQT4+PoqKipIktWnTRhEREVq0aJGCg4PLu1QAAFDBlHtw2b9/vxo1aqR//etfWrx4sfLz83XvvfdqxIgROnz4sPz9/e3aN2rUSMuXLy/1diwWy/UqGQAAlLGSfm6Xe3DJycnRDz/8oMDAQK1YsUIFBQUaPny4RowYodq1a8vT09OuvYeHh/Ly8kq9HX4hGgCAyqfcg0vxT1WPHj1a1apVk5eXl1588UU99thj6t69uwoKCuzaFxQUqEaNGqXeDr8ODQCAeRT/OvSVlHtwadSokaxWq86dO6dq1apJkqxWqyTpb3/7mz766CO79keOHNFdd91V6u3w69BXlpGRodOnTzu6DEjy8vJS/fr1HV0GAFR45R5c2rZtq1tvvVWjRo1SUlKSzp49q7ffflsPPvigOnfurGnTpmn+/PmKiorSrl27tHr1as2cObO8y6z0Tp06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gbZeZ/x/ro4uANeXu7u7pkyZom7duum9995TrVq1bPN+//131a9fXy4uLrZpt9xyiyTpl19+kXT+BdO4cWP9+OOP+v77723dmfn5+Xrttde0Y8cO1atXT02aNLH9kmexOnXq2P7v6nr+qXW5nyf38/Oz/f/mm29WYWGhTp06dQ17f3n169fXhx9+qOTkZA0aNEgWi0Xdu3dXbGysqlWrdsXlb7zxRrtfHHdzc7N9gAwcOFC7du26YJmbb77Zrkvb3d1dktSmTRtFRkZq9erVaty4sSZNmqRFixbZ7reLKSwsVFJSktauXavZs2erdevWJd53mJ+ZXtvS+cO0FotF4eHhF+zHsWPHFBwcrIiICK1cuVKhoaFatWqVEhISbDUfOHBALVu2tC1ntVpt+xcUFKQ777xTa9asUUREhL755htbOImPj9fs2bM1b948xcXFqXHjxoqPj7db1+XUrl3bbl+LX+M7d+7UoEGDLrrM2LFjFRERYbvt4eEhDw8PxcfHq23btvrhhx/00UcfKSwsTA888MBlt79371698MILatmypZKSki77nlBVcY9UQrfddpsSEhI0fPhwde/e3Ta9QYMGysjIkMVisb0BFA8OrVOnjn766SfddNNNmjt3rv75z38qLi5OK1euVPXq1RUfHy9vb2998803qlatmqxWq1q1anVNdWZmZqphw4aSzr/JeXp62r0ZX4yzs7NtXIl0/s3sz2Hnr/P/PKL/999/l8Vi0TvvvCOr1ardu3dr6NChuuOOOxQVFXVN+zJ79uzLzi8eoBcXF2ebVlhYKB8fH3322Wf6448/1K1bN0mSxWKRJLVs2dL2hpidna1nn31WhYWFWr58uW699dZrqhfmZJbXtiTVq1dPHh4e+u6772w1FRYW6tixY7YvLY899pgef/xxdezYUU5OTrr33ntty4aFhWnevHm29Z08eVJnzpyx3e7Ro4fWrFkjNzc3tWzZ0hbU/vOf/6h37956/vnnlZ2drXfeeUdDhgyxjVW5Wi1bttTOnTsvOT89PV1PPPGElixZYuvFLe5B9vb21qpVq+Tm5qaVK1dKOn9m0d69e7Vhwwbbl5vly5fr9ddf19ChQ/X0009fU72VGYeKKqm///3v6tGjh5YuXWqbVvzN56233lJBQYFOnDihxMREtW7dWg0aNJB0vhfByclJL774opydnTVx4kRJ0unTp1WtWjU5Ozvr9OnT+uc//6nTp0/bhYTSmjRpkk6fPq3MzExNmzZNkZGRcnNzs2tT3BNSPKDvzjvv1A8//KDDhw+rqKhIycnJdmcd3Xnnnfr3v/+tP/74Q7m5uZo7d65tXkZGhp5++mlt3bpVzs7Otu7aK4Wl66Fly5ZasmSJduzYIavVqi+++EJr165Vr1699Oyzz2rv3r3auXOndu7cqVmzZkk6/w0vIiJC586dU0xMjLy8vLR48WJCSxVnhte2JAUHB8vPz08TJkzQmTNnVFBQoDfeeENPPfWULZw3btxYDRs21BtvvKFu3brZAk5ERIT27t2rVatWqaioSMePH9egQYPsztDp0qWLDh06pGXLltmFuFmzZikhIUGnT5/WDTfcUKIvRNdDgwYN5OPjo6SkJJ05c0bZ2dkaP3687rvvPjVo0ED79+/Xrl27bK/zFi1aaMCAAbbQ8tlnn2ncuHGaPn06oeUKCC6V2KhRo/S3v/3NdrtmzZp6//33lZaWpvDwcHXu3FkNGjTQ1KlTL1i2WrVqSkpK0rJly/T1118rPj5ehw4dUmhoqB5++GGdPn1a9957r9LS0q66vttuu02dO3dWly5dFBISolGjRl3Qpnbt2urYsaN69+6txYsX68EHH1RERISeeuop3XvvvTp58qRatGhhaz9w4EDdeOONeuCBBxQZGWl37YqgoCCNGTNG48aNU0hIiKKiovSPf/xDjzzyiKTzZwaNGTPmqvfnch588EHFx8crPj5erVq10jvvvKPp06dfcGbBxWzevFkHDhzQjh071KZNG7uzGTIyMsqkXlRsFf21LZ0/zDJ79mxlZWXpoYce0j333KOff/5Z77//vt2h2ccee0wZGRnq2bOnbVqDBg2UnJyspUuXqm3btoqMjFTDhg3tgouvr6/Cw8OVnp6uhx56yDb9tddek9Vq1QMPPKBWrVpp3759tvuh+MygsnjdODk5aebMmSoqKlKHDh0UGRmpm2+++YIzpy5lxowZslgsGjp0qN1rvKzek8zMyfjrKC+gjKWnp+uBBx7Qpk2bbN27FcFPP/2kDz/8UGPHjnV0KQBKICkpSQUFBRo/fnyJl3n55ZcVHx9/wWnKMA/GuAD/Z+3atXr88ccdXQaAK/j111/1v//9TytXrtT8+fNLvFx6errq1atHaDE5ggvwf4YMGeLoEgCUwL/+9S/Nnz9fMTExdofMruSWW27R8OHDy7AylAcOFQEAANNgcC4AADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADANggsAADCN/weIjzsimpOZjAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = sns.boxplot(penguins[['bill_length_mm', 'bill_depth_mm']], showmeans=True)\n", "plt.title('Pingviinien nokan pituus ja leveys')\n", "plt.ylabel('mm')\n", "plt.xticks([0, 1], [f'Nokan pituus, n={penguins['bill_length_mm'].count()}', \n", " f'Nokan leveys, n={penguins['bill_depth_mm'].count()}'])\n", "ax.yaxis.set_major_locator(MultipleLocator(5))" ] }, { "cell_type": "markdown", "id": "71938527", "metadata": {}, "source": [ "### Ryhmittely kategoristen muuttujien mukaan\n", "\n", "Ryhmittely toteutaan **x**-parametrina (tai **y**-parametrina, jos määrällinen muuttuja annetaan **x**-parametrina)." ] }, { "cell_type": "code", "execution_count": 6, "id": "cf322dd0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "([,\n", " ,\n", " ],\n", " [Text(0, 0, 'Adelie, n=151'),\n", " Text(1, 0, 'Chinstrap, n=68'),\n", " Text(2, 0, 'Gentoo, n=123')])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGwCAYAAACOzu5xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPR9JREFUeJzt3XlcVPX+x/E3q6Ao6I/CtBu3e3XMBRI11ExN6mqLa2ZabpVrmprlmnuKWBmWmqaZmUKr2uKSmd3MSjM1FzKX3Egld8AFEJg5vz+MuU6iAuIcjryejwcPmbPM+cyZ7zBvv+d7zvEwDMMQAACABXiaXQAAAEBeEVwAAIBlEFwAAIBlEFwAAIBlEFwAAIBlEFwAAIBlEFwAAIBlEFwAAIBlEFwAFAjXrgRgBoILkA+dO3dWtWrVlJCQkOv8qKgoDRs2LF/POWzYMEVFRRVGedfN31/XzJkz9c4775hYkauC7PeL1zl06JCqVKmixYsXX4/yCoUVagTcwdvsAgCrsdvtGj58uBYvXixfX1+zy3GL6dOnKyAgwPn49ddf17PPPmtiRdfu4td0880366OPPtJtt91mclUAroYeFyCfSpcurd9//11vvvmm2aW4TbVq1W64L/WLX5Ovr69q1qypcuXKmVwVgKshuAD5VLVqVbVu3Vpz5szRr7/+esVl7Xa74uPj1aJFC4WHh+vee+/V5MmTdf78+cuu89tvv6lOnTrq1q2bMjMzJUk7d+7Us88+q3r16ql69epq2LChJkyYoIyMDOd6VapUUXx8vEaMGKHIyEhFRESof//+OnHixGW3lXP4YdmyZerdu7fuvPNONW7cWNOmTZPD4XAud/FhlSpVqki60GOR8/u0adOcv1+sSpUqmjZtmsu2/n6o4++Hyg4ePKhnnnlGdevW1Z133qn27dvru+++u+xruNzrGjJkiO655x5Vr15d9evX15AhQ5ScnJzra/p7bYsXL1a1atW0detWtW/fXmFhYbr33nv19ttvX3G706ZN0wMPPKBVq1apefPmCgsLU6tWrbR582Zt2bJF7dq1U3h4uJo3b65169a5rHe1/fd3hmFo2LBhCgsL05o1ayRdaG+zZ89W8+bNFR4erpo1a6pDhw4u25KkVatW6YknnlBERIRq1KihBx54QHFxcc7569evV5UqVbRu3To9/fTTuvPOO3X33Xfr5ZdfVnZ29hX3AXC9EVyAAhgxYoTKlSun4cOHO8NFbkaPHq2JEycqKipKM2fOVMeOHRUXF6c+ffrkOrh179696tatm8LDwzVjxgz5+vrq2LFj6tixo9LT0zVp0iS9/fbbevDBB7VgwQLNmzfPZf0pU6bI4XAoNjZWQ4YM0erVqzVx4sSrvp6xY8cqICBA06ZNU+vWrTVjxgy98soruS770UcfSZIeffRR5++FxeFwqFevXkpLS9Mrr7yiGTNmKCgoSH369FFiYmKeniM9PV1dunTR3r17NWbMGL3zzjvq1KmTli5dqtjY2HzV8txzz+mhhx7S7NmzVbt2bU2ePFnff//9Fdc7cuSIYmJi1Lt3b73++utKTU1V//799fzzz+uxxx5TbGysHA6HBg4c6BI882vChAlaunSppk+frkaNGkmSJk+erDfffFPt27fXnDlz9NJLLyk5OVkDBgxQWlqaJGn16tXq27evqlevrhkzZmjatGmqWLGixo8fr19++cVlG4MGDVLt2rX11ltvqUWLFpo7d64WLlxY4JqBwsAYF6AAypQpo3HjxumZZ57Rm2++qYEDB16yzJ49e7Rw4UI999xzeuaZZyRJDRo00M0336whQ4ZozZo1aty4sXP5gwcP6sknn1SVKlU0Y8YMlShRQpK0e/duVa1aVW+88YZzTMbdd9+tdevWacOGDerdu7fzOWw2m2JiYpyPt23bphUrVlz19VSrVk2TJ0+WJDVq1EhpaWnOgFWmTBmXZWvWrClJKl++vPP3wnLy5Ent3btXvXv3du6b8PBwTZ8+/Yq9VBc7cOCAypcvr0mTJjkPBdWrV08JCQn6+eef81yLYRjq06eP2rVrJ0mqXbu2vv76a61evVoNGza87Hrp6ekaM2aMM0zs3btXr732mqKjo/Xoo49KutAz0r9/f+3fv19Vq1bNc005XnvtNX300UeaNm2aSxs6duyYBg4cqM6dOzun+fn5qV+/ftq1a5ciIiK0Z88etW7dWiNGjHAuExERobp162rDhg2qVauWc3q7du3Ut29fSVL9+vW1atUqrV69Wh06dMh3zUBhIbgABRQVFaWWLVtqzpw5atq0qapXr+4yP+dLskWLFi7TH374YQ0fPlzr1693fumcO3dOTz75pI4fP674+Hj5+fk5l7/nnnt0zz33KCsrS/v379eBAwe0a9cunTp1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2/uy17mSbsDgkp2d7bzTKQAAsJawsDDn7Shyc8MFl5yUFhYWJi8vL5OrAQAAeWG325WQkHDF3hbpBgwuOYeHvLy8CC4AAFjM1YZ5MDgXAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYhinBJSUlRUOGDFHdunV11113qU+fPjp27JgkaevWrWrXrp0iIiIUFRWlTz75xIwSAQBAEWRKcOnXr5/S0tL09ddf69tvv5WXl5dGjRql1NRU9ezZU61bt9aGDRsUHR2tmJgYbdu2zYwyAQBAEeP267j8+uuv2rp1q9auXauAgABJ0vjx43X8+HGtXLlSQUFB6tixoySpfv36atGiheLj4xUeHu7uUgEAQBHj9uCybds2VapUSR9//LE++OADpaenq2HDhho6dKh+//132Ww2l+UrVaqkhQsX5ns7dru9sEoGAADXWV6/t90eXFJTU7Vr1y7VqFFDn376qTIyMjRkyBANHTpUwcHB8vf3d1nez89PaWlp+d4O9ysCAFxPDodD+/bt0+nTp1WmTBn961//uurl6nHt3B5ccm6cNGLECJUoUUIBAQF67rnn9Nhjj+mRRx5RRkaGy/IZGRkqVapUvrfDvYoAANfL999/r7feektHjhxxTitfvrx69+6thg0bmliZdeXcq+hq3B5cKlWqJIfDoaysLJUoUULShdQqSVWrVtX777/vsvyePXtUuXLlfG+HexUBAK6HNWvWaNy4capfv75GjRql22+/Xfv371d8fLzGjRuncePGqVGjRmaXecNye5/W3XffrX/84x968cUXde7cOZ06dUpTpkzR/fffr+bNm+vEiROaN2+esrKy9NNPP2nJkiVq27atu8sEAOASdrtdM2bMUP369TVhwgRVr15dJUuWVPXq1TVhwgTVr19fM2fOZJzldeT24OLj46MFCxbIy8tLzZo1U7NmzVS+fHlNnDhRZcuW1dy5c7VixQrVrVtXI0eO1MiRI1WvXj13lwkAwCW2bdumI0eOqGPHjpeMZ/H09FTHjh31559/chmP68jth4okKSQkRFOmTMl1XlhYmD788EM3VwQAwNWdOnVKknT77bfnOj9nes5yKHwMfwYAII/KlSsnSdq/f3+u83Om5yyHwkdwAQAgj8LDw1W+fHnFx8c7TyzJ4XA4FB8fr1tuuYWLpl5HBBcAAPLIy8tLffr00bp1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4KR8UxbJN8nX/YUVEwQXAECBpd/eSA7/ILPLcBtDhjKrL5EMKddOFUM628BXvttbFKteF8/0FLeFWIILAKDAHP5BcpQKNrsMtzE8smWUSM89tEiSh2SUSJcjoKw8DL5irwf2KgAAeeRheMtnX2cZXumXXya7JKHlOmLPAgCQDx5ZZeSRVcbsMootTocGAACWQXABAACWQXABAACWQXABAACWUaDBudnZ2Tpx4oQcDofL9AoVKhRKUQAAALnJd3BZuHChxo8fr8zMTOc0wzDk4eGhHTt2FGpxAAAAF8t3cHn99dc1aNAg3XvvvfL05EgT4E6eGalml4AigHaA4izfwSUzM1MdO3YktABuFBgYKB/fEtK+78wuBUWEj28JBQYGml0G4Hb5Di4tW7bUBx98oI4dO16PegDkIiQkRHEL5is1tXj/TzsxMVHR0dEaMWKEQkNDzS7HVIGBgQoJCTG7DMDt8h1c7r//fnXr1k1vvPGGSpcu7TLvm2++KbTCALgKCQnhi+ovoaGhstlsZpcBwAT5Di5jxozRAw88oPr168vLy+t61ARJSUlJOnv2rNllFAkBAQGcsQYAkFSA4HLs2DG99tpr16MW/CUlJUWdOnW65HTz4srT01OLFy9WUFCQ2aUAAEyW7+BSt25dbd68WREREdejHkgKCgpSXFycqT0uRWksQUBAAKEFACCpAMGlYsWKevrpp1W3bl2VLVvWZV5MTEyhFVbcFZVDI4wlAAAUJfkOLmlpaXrggQeuRy0AAABXlO+LsQwZMkS33nor13EBAABul+8el+eff15JSUmqWbMm4QUAALhVvoPLli1b9O233zJYEgAAuF2+u0xuu+02ZWVlXY9aAAAArijfPS6jR49Wz5491bp160vuk9G6det8PZfdbteTTz6pihUratKkSZIuXOBu0aJF8vHxcS43bNgwtW/fPr+lAgCuM274CMm97SDfwWXhwoXavXu33n33XZcxLh4eHvkOLtOnT9fGjRtVsWJF57SEhASNHz9ebdq0yW9pAAA34caf+Dt33fgz38FlxYoV+vzzz1WpUqVr2vC6deu0cuVKNW3a1DktMzNTu3fvVo0aNa7puQEA1xc3/rygKF2s02zuuvFnvoNL2bJlddttt13TRk+ePKkRI0ZoxowZmjdvnnP6zp07lZ2dralTp2rTpk0qXbq02rZtq+7d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+Ph4ff755yZXXfTt3r1bLVu2VGZmpt5++21t2rRJK1euVMuWLdW3b1999913hbKd5OTkQnked0lKSlLPnj319ddfu0zPyMhQ9+7dFRERoR9++EFLly5VSkqKXnzxRUnSf//7X73xxhuKjY3V5s2bNXnyZL3yyiv66aefzHgZheKGu1eRFcXHx+vxxx/X/Pnz1alTJ3l7F+7bUlhfNIUlOTlZ0dHRWrJkidq0aeMyLyEhQXfddZcWLFhw2fW/+eYbjRo1SikpKde50hvP6NGj1bp1a/Xv39857fbbb9eUKVM0evRoHTx4UP/85z8lST/++KMmTpyoP/74Q//+9781ceJE2Ww2rV+/Xl26dNGuXbt06NAh3XfffZowYYJmzpyp1NRUhYeHKyYmRuXLl9fZs2c1atQorV27Vt7e3rrjjjv04osvytfXVz169JAkRUREaO7cufroo4+Ulpam33//XcnJyfr444914sQJvf7669q3b59SU1NVuXJljR49WjVr1tT69es1ePBgtW3bVu+//74kqWXLlho8eLB8fX2vui+ioqLUvn17ffnll0pMTFRoaKiGDRumevXqaePGjc76/m7cuHFq0KCBPv/8cy1fvlw333yzJGnQoEHav3+/DMNQUlKS0tPT5XA4nL0sHh4e8vf3L/B7V1yMHj1aDRo0UExMjHNaUFCQWrVqJYfD4RJ2165dq9jYWB04cEAhISHq1auXWrZsKUkaNmyYfH19dezYMa1fv17lypVT165d1aVLF7355ptasmSJpAs9f1988YUOHz6sV199VevXr5enp6fq1aunoUOHOt/fjRs3asqUKdq1a5fKlCmjli1bqk+fPnlqa507d1bNmjX1yy+/6LffflP58uXVr18/PfTQQ0pKStLDDz+c63q9evVS7969tX//fnXo0EEdO3Z06RmVLgSaO+64Q3379pWXl5d8fX3Vvn17DRkyRNKFdv7f//5XAQEBys7OVnJysjw8PFSmTJl8vCtFjAFTrV271oiMjDTS09ONxo0bG0uXLnXOO3r0qNGrVy8jIiLCiIqKMl577TXDZrM55ycmJhq9evUyIiMjjXvvvdeIjY01zp8/bxiGYSxatMho0qSJYRiG8dNPP+V5vasZOnSoMWrUKKNXr15GzZo1jaioKOO9995zzq9Zs2auP6NGjTIMwzDOnj1rREZGGuPGjTP69etnDB061OX5hwwZYkyaNOmy2582bZrx0EMPGR9//LFhs9mMgwcP5qluXHjfbTabsWHDhqsua7PZjPbt2xvHjx830tPTje7duxtPP/20YRiu7engwYOGzWYz+vTpY6SmphrHjx83mjdv7ny/33jjDaN79+5Genq6cf78eWPo0KFG7969L3kew7jQtmrWrGns2rXLSE1NNdLT043IyEgjLi7OsNvtxrlz54wBAwYYjz/+uMv6AwYMMM6cOWPs37/fuP/++40pU6bkaX80adLE+M9//mMcOHDASEtLM4YOHWo0a9YsT+uuXr3aiIyMND799FPjoYceMurVq2f07dvXOHz4sGEYhuFwOIz+/fsbNpvNqFq1qmGz2Yzx48fn6bmLsz///NOw2WzG2rVrr7rsjh07jPDwcOOrr74ysrOzjU2bNhl169Y11qxZYxjGhfZUvXp144cffjCysrKMDz74wKhatapx5MgR5/ycvz+ZmZlG06ZNjeeff944ffq0kZqaajz//PNGmzZtjKysLGPv3r1GjRo1jHnz5hnnz583Dhw4YLRo0SLP72mnTp2MyMhIY/v27cb58+eN2NhYo3bt2kZGRkae1j9z5oxx+vRp53NNnTr1issPHjzY6Ny5s8u0vXv3OttiTExMnrZbVHGoyGQLFizQY489Jj8/Pz3xxBOaO3euc97AgQPl7e2tNWvWKC4uTmvWrHHOS0tL05NPPqnKlStrzZo1ev/997V27dpLjn3+XUHXu9jixYvVuXNnbdiwQT169NCkSZN09OhRSdLmzZtz/XnppZckSSVKlNCyZcs0evRolSxZ8pLnTkhI0Pbt29W0aVPdfffdeu6553TkyBHn/Hbt2mnp0qWqX79+nuvFBTnHvIODg/O0/FNPPaXg4GD5+fnp/vvv1x9//HHZZXv06KEyZcooODhYUVFRzkG3fn5+2rlzpz777DMdPXpUEydOvOK4gpo1a8pms6lMmTLy8fHRRx99pCeeeEKZmZk6fPiwgoKCnG1NutCLMWbMGAUEBOif//ynunfvri+++CJPr0+SHn30UYWGhsrf318tWrTI82Dh1NRUnTlzRitXrtSCBQu0cuVK+fv7q3fv3rLb7crMzFRQUJDeeOMNbd26VR988IGWLVumTz75JM+1FUc5n/Xy5cs7p61bt0516tRRnTp1FBERoWbNmkmSPvzwQ913331q2rSpvLy8VKtWLT322GOKj493rlu3bl01aNBA3t7eatu2rex2e67teOPGjTp48KDGjRun0qVLq0yZMho3bpx27typX3/9VUuWLFGVKlXUtWtX+fr6KjQ0VC+88II++eSTq97JOEezZs1UrVo1+fr6qk2bNjpz5oxOnjyZp3UDAgJUunTpqy5nGIamTJmib7/9ViNGjHCZ949//ENbt27VwoULtWzZMs2ePTtP2y6KCC4mOnz4sL7//nvnGI7HHntMe/bs0c8//6zDhw9r48aNGjRokAICAnTLLbfo2Wefda67evVqZWZm6vnnn1eJEiV0yy23aMCAAS4f2twUdL2L5fWPQW68vb0v+8Vpt9t1880365577tGiRYu0dOlSeXh4qGfPns6xFyEhIdz1u4BuuukmSdLx48dznX/ixAmXx0FBQc7ffXx8rjj+5eL31Nvb23l4pEePHurWrZsWLlyoZs2a6cEHH9TKlSsv+zw53fKS5OXlpfXr16tp06bOw1EHDx50GeAaGBiosmXLOh/fcsstOnbs2GWfP691b9y40fll+fefJUuWyNfXV3a7XUOHDlW5cuVUunRpDR8+XLt27dL+/fsVHx+vQ4cO6YEHHpCPj49q1aqlLl266IMPPshzbcVRThu9OJzWr19fGzdu1MaNGzVq1CjnoaLDhw/r66+/dnlvFixYoD///POS55MutGFJuQaNkydPqmzZsgoICHBOCwgIUFBQkA4fPqyTJ0/qH//4h8s6t956qzIyMvIcPi6uJWc4gMPhUFJS0mXbWn7CxdmzZ9W/f38tWbJEcXFxl4yH9PHxkY+Pj8LCwtSlSxctXbo0z89d1DDGxUTvv/++srOz1apVK+e07OxszZ07Vz179pQkVahQwTnvtttuc/5++PBhnTp1SnfddZdzmmEYysrKuuIH6Wrr/d///d9V677SH4M6derkuk7z5s01duzYKz6vl5fXJQOUR40apfr162vv3r2y2WxXrQ2XV7FiRdlsNi1fvtzl/Zcu/OFu0qSJYmJiCvVMn127dikqKkpPPvmkzpw5o/fff18DBw687MDAi0Pp1q1bNX78eH344YeqUaOGJGnu3Lnav3+/c5kzZ84oPT3dOXbk0KFDLp+ZgqpTp442btx42fl79uyRJGVmZjqn5QQ7468xLhfPky58WeV8XpC7ihUrKiwsTJ988onq1at3xWXLly+vNm3aOHtzJenYsWMFOnOrYsWKSk5O1tmzZ53h5cyZM0pOTtZNN92kihUrXhK4//jjD/n6+iowMDDf27tYhQoVrtjW8uKPP/5Qjx49VKFCBS1cuFDlypVzzps3b562bNmi119/3TktMzPzmus2Ez0uJjl//rwWLlyo6Ohoff75586fmTNnavXq1c4/ggcPHnSuc/Ehk/Lly+u2225z/k9k48aN+u6777R06VKXRvt3BV0vry5+3ot/rhZaJOnPP/9UTEyMy+CznD/+fn5+11wbLgTBRYsWafr06UpOTpZhGNqxY4d69+6t6tWrO7vhC8snn3yiIUOG6OTJkwoICFBAQIBKliwpX19flShRQtKFL4jcnDlzRp6ens73fsuWLZo/f/4lYeHll1/W+fPntW/fPr3zzjt69NFHC/U15KZSpUq66667NHr0aJ06dUrnzp3TpEmTVL16dVWuXFlRUVHatGmTPv30UxmGoZ07d2rBggXOgaO4vIkTJ+r777/XqFGjnIOdz549q88++0zTpk1z9so9+uijWrp0qX744Qc5HA4dOHBAnTp1cjncfiW+vr7OthcWFqZKlSppzJgxOnPmjM6cOaOxY8fqtttuU61atfTwww9r7969eu+995SZmak//vhDsbGxatGiRZ4G515Pqamp6tq1q2rVqqV33nnnkr/jderU0apVq7R8+XI5HA5t2rRJ8+fP1+OPP25SxdeO4GKSJUuWyMPDQy1atFD58uWdP40aNZLNZtMXX3yhe+65RzExMUpNTdXx48c1ffp05/pNmjTRuXPnNGfOHGVmZur06dMaOnSoBg4ceMVDKQVdzx3Kli2rZcuWacqUKTp//rxOnTqlcePGqX79+i69TSi4yMhIxcXF6bffftPDDz+sWrVqqX///qpXr57mzJlT6D0Czz//vEJDQ53bWrx4sWbMmKESJUrIZrOpdu3aatiwYa6nuDZo0EBPPPGEOnbsqLvuukvjxo1T586dderUKZfDWoGBgbrvvvvUpUsXtWnTRt27d5f0v8sAJCUlFepryjFz5kxVrlxZrVu3VsOGDZWWlqYZM2ZIku6++25NnjxZ7777rmrXrq3+/fvr6aef1hNPPHFdarmR2Gw2LV26VH5+furdu7dq166txo0b6+OPP1b37t01f/58SdKdd96p2NhYxcbG6q677lKnTp0UFRWlF154IU/beeihh/TLL7/o3nvvlbe3t2bNmqXs7Gw1a9ZMTZo0UVZWlt599115e3vr1ltv1Zw5c/TVV1/p7rvv1hNPPKEGDRpo9OjRki6c2RMREXHNPScFsXjxYiUlJenLL79U7dq1XS4lIUk1atTQ1KlT9dZbb6lOnToaO3asRowYoYceesjttRYakwYFF3tt2rQxJkyYkOu8uLg4IywszDhx4oTx3HPPGREREUbDhg2NKVOmuJyFsWfPHqN79+5G3bp1jbvuust49tlnnSPmr3RW0ZXWM4wLZwZ9/vnnudZ28Uj8HDabzfjpp5/yvQ9ye64dO3YYTz75pFGnTh2jTp06xqBBg4zk5ORL1s05m4Wzioqvv7fr3AwcONA4efKkmypCcTZ58mRj69atZpdRLHgYBpdyhKsPP/xQgYGBevDBB80uBbisi68nk5tDhw7p/fffd17PArhezp07p4kTJ2r8+PHy9ORAxvXGHoYLwzCUkJCgRo0amV0KcE1uvfVWQgvcolSpUoqOjia0uAk9LgAAwDKIhwAAwDIILgAAwDIILgAAwDIILgAAwDIILgAAwDIILgAAwDIILgAAwDIILgAAwDIILgAAwDL+HxYtCmKk+SNOAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.boxplot(data=penguins, x='species', y='bill_length_mm', showmeans=True)\n", "plt.title('Nokan pituus lajin mukaan')\n", "plt.xlabel('')\n", "plt.ylabel('mm')\n", "n_arvot = penguins.groupby('species')['bill_length_mm'].count()\n", "plt.xticks([0, 1, 2], [f'Adelie, n={n_arvot['Adelie']}', \n", " f'Chinstrap, n={n_arvot['Chinstrap']}', \n", " f'Gentoo, n={n_arvot['Gentoo']}'])" ] }, { "cell_type": "markdown", "id": "64b6d043-fd43-4d1c-8667-a6e198f5b630", "metadata": {}, "source": [ "Seuraavassa lisätään ylimääräinen ryhmittelevä muuttuja **hue**-parametrina.\n", "\n", "Huomaa, miten selitteen otsikko vaihdetaan. Lisätietoa selitteen muokkaamisesta https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html." ] }, { "cell_type": "code", "execution_count": 7, "id": "dbfe3108", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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dJ/lXU/f8KoiIiLSC66urrC1tcW2bdsQFham01ykVqsRExMDOzs7uLq6Ij8/X8BKKy4uLg4FBQXo06ePdlpBQQGio6Mxfvx4AIC9vb12XtOmTbU/37lzBw8fPsR7772nnabRaJCfn//Ss1GvWk8sgZDBhYiI9IJUKoW/vz+CgoIQEBAAHx8fODo6Ijk5GTExMUhMTERISAikUqmog0teXh527dqFRYsWoX379trp165dw/jx4zFmzBgAwO3bt/H6668DQJFLw5s2bYr4+HjttOzsbGRmZqJ+/fol7re86+kbBhciItIbXl5eCAkJQUREBPz8/LTT7ezsEBIS8spxXApJniqqpS+E5KmizOt8//33kEgk6N27N4yMjLTTbW1t4eTkhP3798PT0xOLFy/GypUroVQqER4erl2uS5cuWLZsGTZv3owRI0YgNzcXc+fOxd27d7Fnz54S91ve9fQNgwsREekVLy8veHp6lmvkXLlcDpnMGLhxpOoL/f9kMmPI5fJSLx8XF1cktBQaMmQIli5disOHDyM0NBRdunSBubk5+vfvjwsXLgAAzM3NsWXLFixZsgSbN2+GWq2Gu7s7oqKiXrrf8q6nbyQajUYjdBGVSaVS4fz582jVqlWp3uRERCQ+ubm5SElJQbNmzWBiYqIzj/cq0l8ve91Ke/zmGRciIqpRbGxsGCRqMF4OTURERKLB4EJERESiweBCREREosHgQkRERKLB4EJERESiweBCREREosHLoYmIqEbhOC41G4MLERHVGBkZGfDx9kaeUllt+zSWyRATGyva8HLz5k289tprQpdRagwuRERUYygUCuQplZjk8gT2dVRVvr+0J1JE/fVsv2UNLikpKVi/fj0SExORlZUFKysr9OjRA5MmTUKdOnXg7OyMrVu3wt3dvci6p0+fxrhx43Du3LkK1f+///0PgwcPxqVLlyq0nerE4EJERDWOfR0VmtWt+uBSXmfPnsXo0aMxevRofPfdd6hfvz5SUlIQFBSE0aNHIy4u7qXrt2nTpsKhBQCysrJEd6dtds4lIiKqZkFBQejbty8mT56M+vXrAwCaNWuG1atXw8rKCrdv3wYA/Pnnn+jTpw/c3NwwcOBAXLt2DQBw4sQJODs7AwD++ecfODs7Y+fOnejatSveffddjBo1Cunp6QCA7OxsTJ06Fe7u7ujQoQPGjBmD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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.boxplot(data=penguins, x='sex', y='bill_length_mm', hue='species')\n", "plt.title('Nokan pituus eri lajeilla sukupuolen mukaan')\n", "plt.xlabel('')\n", "plt.ylabel('mm')\n", "plt.xticks([0, 1], ['Uros', 'Naaras'])\n", "plt.legend(title='Laji')" ] }, { "cell_type": "markdown", "id": "538a6733-3d93-4b6a-9095-d0b531edc212", "metadata": {}, "source": [ "Havaintojen lukumäärät eri ryhmissä (**n-arvot**) olisi aina syytä tarkistaa. Edellisen kaavion kuuden ryhmän n-arvoja on vaikea sijoittaa kaavioon, mutta ne ovat helposti laskettavissa komennolla `penguins.groupby(['sex', 'species'])['bill_length_mm'].count()`. Samassa yhteydessä voidaan laskea myös muut tunnusluvut **describe**-funktiolla kuten seuraavassa on tehty:" ] }, { "cell_type": "code", "execution_count": 8, "id": "f214e1e7-be19-407d-bf06-64640c30ced4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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", "
countmeanstdmin25%50%75%max
sexspecies
FemaleAdelie73.037.2575342.02888332.135.90037.0038.80042.2
Chinstrap34.046.5735293.10866940.945.42546.3047.37558.0
Gentoo58.045.5637932.05124740.943.85045.5046.87550.5
MaleAdelie73.040.3904112.27713134.639.00040.6041.50046.0
Chinstrap34.051.0941181.56455848.550.05050.9551.97555.8
Gentoo61.049.4737702.72059444.448.10049.5050.50059.6
\n", "
" ], "text/plain": [ " count mean std min 25% 50% 75% \\\n", "sex species \n", "Female Adelie 73.0 37.257534 2.028883 32.1 35.900 37.00 38.800 \n", " Chinstrap 34.0 46.573529 3.108669 40.9 45.425 46.30 47.375 \n", " Gentoo 58.0 45.563793 2.051247 40.9 43.850 45.50 46.875 \n", "Male Adelie 73.0 40.390411 2.277131 34.6 39.000 40.60 41.500 \n", " Chinstrap 34.0 51.094118 1.564558 48.5 50.050 50.95 51.975 \n", " Gentoo 61.0 49.473770 2.720594 44.4 48.100 49.50 50.500 \n", "\n", " max \n", "sex species \n", "Female Adelie 42.2 \n", " Chinstrap 58.0 \n", " Gentoo 50.5 \n", "Male Adelie 46.0 \n", " Chinstrap 55.8 \n", " Gentoo 59.6 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "penguins.groupby(['sex', 'species'])['bill_length_mm'].describe()" ] }, { "cell_type": "markdown", "id": "3d2b1960-47b6-4f8b-94b4-0d2d78385959", "metadata": {}, "source": [ "### Usean kaavion yhdistelmä\n", "\n", "Usean kaavion yhdistelmä voidaan luoda **plt.subplots**-funktiolla, joka palauttaa kuvion (**figure**) ja kuvion sisään sijoitettujen kaavioiden listan. Seuraavassa nämä on sijoitettu muuttujien **fig** ja **axs** arvoiksi. Parametrin `ncols=2` mukaisesti luodaan kuvio, joka sisältää kaksi kaaviota vierekkäin. Kaavioilla on yhteinen y-akseli (`sharey=True`) ja kuvion koko on **12.8 x 4.8**. Oletuskuvion koko olisi ollut **6.4 x 4.8**. Lisätietoa usean kaavion yhdistelmistä https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplots.html.\n", "\n", "- Koko kuvion otsikko määritellään **plt.suptitle**-funktiolla.\n", "- Kuvion sisällä sijaitseviin kaavioihin voi viitata **axs[0]** ja **axs[1]**. Kaaviot luodaan normaaliin tapaan, mutta ylimääräisenä parametrina **ax** annetaan viittaus kaavion sijaintiin kuvion sisällä, esimerkiksi `ax=axs[0]`.\n", "- Usean kaavion yhdistelmissä kannattaa yksittäisen kaavion muotoiluun käyttää **plt**:n sijasta suoraa viittausta muotoiltavaan kaavioon (esimerkiksi `axs[0]`). Lisätietoa https://matplotlib.org/stable/api/axes_api.html." ] }, { "cell_type": "code", "execution_count": 9, "id": "3640541c-989d-4a1e-9178-a8346e06f614", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABB4AAAHdCAYAAAC64rqOAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdsNJREFUeJzt3X1cVGX+//E3MwiooKOogFYEudKKTuKaRrKSZtmWZqndKXbvHVRmeUs2KCJamd0okGVmCm5tmWVl1lYrtRtp3oV2YxlEJoKGkiAiOjO/P/w53whU0BmGm9fz8fChnHPmnM+cGZnres91neNht9vtAgAAAAAAcAGDuwsAAAAAAACNF8EDAAAAAABwGYIHAAAAAADgMgQPAAAAAADAZQgeAAAAAACAyxA8AAAAAAAAlyF4AAAAAAAALkPwAAAAAAAAXIbgAQCAWrDb7e4uAQAAoEEheAAAnNXo0aPVtWtX7dixo9r1AwYM0PTp02u1z+nTp2vAgAHOKM9l/vy80tLS9PLLL7uxIucJCwvTokWL3F3GaW3cuFFhYWHauHGjJGnRokUKCwtzrB89erRGjx59Xsf49ddfFRYWprfeeuucH/PWW28pLCxMv/7663nV4koNoUYAQOPm6e4CAAANg9Vq1YwZM/TWW2/Jy8vL3eXUicWLF8vX19fx87PPPqsHHnjAjRU5z+uvv67AwEB3l3Fa4eHhev3119W5c2d3l1JJhw4d9Prrr+uiiy6SJF111VV6/fXX1aFDBzdXBgBA/UXwAACoET8/P/34449KSUnRpEmT3F1Onejatau7S3CZHj16uLuEM/L19a2XNXp5eVWqq23btmrbtq37CgIAoAFgqgUAoEb++te/6qabbtLSpUu1c+fOM25rtVqVkZGhIUOGyGw266qrrtKCBQt07Nix0z7m22+/Va9evXTfffepoqJCkvT999/rgQce0BVXXKHw8HD9/e9/V1JSksrLyx2PCwsLU0ZGhh577DH17t1bEREReuihh/Tbb7+d9linhsu///77Gj9+vC677DJFR0dr0aJFstlsju3+ONXi1DD/xYsXO/795+H/f6zp1DSG0w3n//NUkz179mjChAnq06ePLrvsMt12223KzMw87XM45Y033tANN9ygbt266aqrrtKiRYt04sSJSse56667lJCQoF69eunmm2/WiRMnzjrV4uDBg5o8ebL69u2r7t27a+jQoXr77bcrbfPVV1/pvvvu0+WXX65u3bppwIABVc7hr7/+qqlTpyoqKkrh4eGKjIzU1KlTdejQIcc2AwYMUHJysu666y717NlTFoulylSLszl48KBmz56t/v37q1u3burdu7fi4uJqPb3gbM/pbFMtpk+frrvvvlurV6/WoEGD1K1bN914441nfS1Hjx4ti8WitLQ0/f3vf9dll12mMWPG6LffftPq1at1zTXXKCIiQnfffXel51TdlJOznbvDhw9r6NChGjBggGNfNTl/VqtVL774ogYPHiyz2awePXro9ttvV1ZWlmObRYsW6ZprrtGGDRs0ZMgQdevWTYMGDdKaNWtq+hIAABohRjwAAGrsscce0xdffKEZM2Zo9erVp51yYbFY9Pbbb+v+++9X79699e233yolJUXfffedli5dKg8Pj0rb//TTT7rvvvtkNpuVmpoqLy8v7d+/X6NGjVKPHj00f/58eXl5acOGDXr11VfVrl07jR8/3vH4Z555Rtdcc40WLlyoPXv2aN68efL09NTChQvP+HxmzZrlCBy2bNmi1NRUHTlypNrrVbz++uu67bbbNGLECN1yyy3ncPZOz2azady4cWrfvr2efPJJeXp6asWKFYqNjdW6desUHBxc7eOWLFmiZ555RjExMZoxY4a+++47LVq0SPv27VNycrJju82bN8vDw0OLFi3SkSNH5Ol59o//KVOmqKioSLNnz1bLli21du1aTZs2TUFBQerTp4++//573X333bruuuv0zDPPyG6365133tHixYt18cUXa8iQITp69KjuvPNOtWnTRgkJCfLz89OWLVuUkpIib29vzZkzx3G8jIwMjRo1SmPHjpWPj0+l8ORs7Ha7xo0bp99//12PPvqo2rdvr++++07PPfecLBaLli1bVqP91OQ51cTOnTu1f/9+PfTQQ/L19dVzzz2nhx56SJ999plat2592se9//776tq1q+bOnav8/HzNmTNHMTEx8vHx0bRp01RcXKy5c+cqMTFRL774Yo1q+bMjR45ozJgxOnz4sFasWKELLrigxudvwYIFWrVqlSZPnqywsDAVFBQoJSVFEydO1IYNG9SiRQtJ0oEDB5SYmKgJEyaoU6dOevnllzV9+nSZzWZdcskl51Q3AKBhI3gAANRYq1atNHv2bE2YMOG0Uy52796tN998Uw8//LAmTJggSerbt686dOigqVOn6rPPPlN0dLRj+z179ujuu+9WWFiYUlNT5e3tLUn64Ycf9Ne//lXPPfec4zoLV155pbKysvTVV19VCh66dOmiefPmOX7Ozs7W+vXrz/p8unbtqgULFkiS+vXrp7KyMqWnpys2NlatWrWqtO2p4fWBgYFOnwJQVFSkn376SePHj3ecG7PZrMWLF592lEhJSYnS0tJ02223aebMmZKkqKgomUwmzZw5U/fcc4/+8pe/SJJOnDih2bNnnzbAqM6mTZsUGxurgQMHSpL69Okjk8kko9Eo6WQn/corr9RTTz0lg+HkAMq+fftqw4YN+uqrrzRkyBD9/PPPCgwM1Pz58x3XRLjiiiu0Y8cObdq0qdLxOnTooOnTpzv2VdORDpK0f/9+NW/eXNOmTVOvXr0c9f7666967bXXaryfmjynmigpKdFbb73leM4tWrRQTEyMvvzySw0aNOi0jzt+/LgWL17sCCf+/e9/67///a8+/vhjXXjhhZKk7777Tu+8806Nn9MfHTt2TBMmTFBBQYHS09Md+6zp+du/f78mTZpUaYSFj4+PHnzwQe3atUsRERGSpKNHj2ru3LmKjIyUJF188cXq37+/MjMzCR4AoIkieAAA1MqAAQN04403aunSpbr22msVHh5eaf2pDuWfO2k33HCDZsyYoY0bNzo610eOHNHdd9+tAwcOKCMjQz4+Po7to6KiFBUVpePHjys3N1c///yzdu3apYMHD8pkMlXa95+DgMDAQB09evSsz+XGG2+s9POgQYO0YsUKbd++Xf369Tvr452lXbt26ty5sx5//HF98cUX6tevn6KiojRjxozTPmbbtm06evSoBgwYUGl0wKnpG//73/8cwYOPj4+jE1xTffr00aJFi/T9998rOjpa/fr107Rp0xzrb7rpJt100006duyYfvnlF+Xl5embb76R1WrV8ePHJZ2cnrNq1SrZbDbt2bNHP//8s3788Ufl5ORUGdFwySWXODr7tRUQEKAVK1ZIkvLz85WXl6effvpJW7duddRSEzV5TjXRtm3bSuf71EU8z/aevOSSSyqNiGjfvr3atm3rCAgkyWQyqaSkpMa1/NHUqVO1c+dOzZ07t9I+a3r+nn76aUknp2Xk5eUpNzdXn376qSRVOT9//D956vmXlZWdU90AgIaP4AEAUGszZ85UVlaWpk+frtWrV1da9/vvv0s62Wn6I09PT7Vp06ZSp6m4uFghISEqLS3Vk08+qcWLFzvW2Ww2LVy4UBkZGSorK1NQUJDMZrNjRMQfNW/evNLPBoNBdrv9rM/jz3ciOHWRwMOHD5/1sc7k4eGhZcuWKS0tTf/+97+1Zs0aNWvWTAMHDtSsWbOqBC3SyXMnSWPHjq12n/v373f829/fv8r0lrN55pln9MILL+iDDz7Q+vXrZTAYdOWVV2rWrFm68MILVV5erjlz5uidd97RiRMndMEFFygiIkKenp6Vzv0rr7yiJUuW6NChQ2rXrp3Cw8PVvHnzKp3ndu3a1aq+P1u7dq0WLlyoffv2yWQy6dJLL60UZNVETZ/T2fz5/Xjq3P/x2hfV+eMdVE63r/NRWFiobt26KSUlRf/4xz/UsmVLx7qanL8dO3Zo9uzZ2rFjh3x8fNS5c2d16tRJkqqcnz/WfSpQqs05BAA0LgQPAIBaa926tWbNmqW4uDilpaVVWSednOd9wQUXOJYfP35chw4dUps2bRzLTCaTXn75Zb3//vt6/PHH9dFHH+naa6+VJL344otavny5Zs2apUGDBsnPz0+SNGLECKc9j1Od91OKiookneyo18SpDqXVanVMQThy5Mhpt/mjP3/7GxAQoFmzZikhIUHff/+91q9fr5deekmtW7fW7Nmzqxz71FSQBQsW6OKLL66y/nw78n5+fpoyZYqmTJminJwcffLJJ0pNTdXs2bO1dOlSzZ07Vx9++KGeffZZXXnllY75/aeG10vSu+++q/nz5+vRRx/ViBEjHMHOxIkTtWPHjvOq7482b96sadOmKSYmRvfdd5/jG/Ynn3xSW7ZsqfF+avKc6qOzvbdOOXV72JtuuknPPPOMY4pOTc5faWmp7r//foWFhem9995zjFDJzMzUhx9+6MJnBwBoDLirBQDgnAwcOFCDBw/Wiy++qIMHDzqW9+7dW9LJTucfvf/++7Jarfrb3/7mWNayZUu1bNlSt9xyiyIiIpSYmOgYbbBlyxZ17txZI0aMcIQOhYWF+uGHH876zXFNnRomfsqHH36o5s2b67LLLqt2+z9PBTj1DfW+ffscy7Zu3VrtNgUFBY5lx48fV3Z2tuPnbdu26corr1R2drY8PDz017/+VZMmTVKXLl0qPe6PLrvsMjVr1kyFhYXq3r2740+zZs309NNP1/puDn+0d+9eRUdHO66TERoaqjFjxujKK6901LNlyxb16dNHAwcOdHTQd+7cqYMHDzpeny1btsjPz09jx451hA5HjhzRli1bnPYaSifPn81m00MPPeToNFutVn3xxReSzj7S4JSaPKf6xtfXt8p75M/vwVNOTem55557lJGRoW3btkmq2fnLyclRcXGx7rzzTv3lL39x/F/47LPPHNsAAHA6jHgAAJyzxx9/XF9++WWlW1d27txZN998sxYvXqzy8nL16dNH3333nRYvXqw+ffro73//e5X9eHh4aPbs2Ro2bJieeOIJzZ0713GHixdffFE9evRQXl6elixZooqKihpdv6Em1q9fr3bt2ik6OlqbNm1SRkaGJk2a5Oh0/lmrVq20bds2ffXVV+rVq5eio6M1b948Pf744xozZowKCgq0ePHiSkPYW7durYiICKWnpys4OFht2rTRypUrVV5e7jhO165d5ePjo6lTp+rBBx9Uu3bt9MUXX+i7777TnXfeWW0tbdq00f3336/nnntOpaWl6tOnjwoLC/Xcc8/Jw8NDl1566Tmfl06dOikwMFBJSUkqLS3VRRddpJ07dyozM1Pjxo2TdPLilx988IH++c9/6pJLLtH333+vtLQ0eXh4OF4fs9msf/7zn5o/f7769++v/fv36+WXX9Zvv/12xrs71JbZbJYkJSYmavjw4Tp8+LDS09P1/fffSzo5AqC6aQzV7edsz6m+6d+/vz799FPNnTtXAwcO1JYtW6rc9vTP4uLi9P7772vmzJlas2ZNjc5fSEiIfH199cILL8jT01Oenp768MMP9eabb0o6+/UrAABNG8EDAOCcmUwmzZo1Sw888ECl5XPnzlVwcLBWr16tl19+WR06dNDo0aMVFxd32gsIhoWF6c4779SyZcs0ePBgjRs3TocOHdKKFSuUkpKioKAgDR06VB4eHlqyZIl+//338+68Tpw4UZs2bdLrr7+uoKAgWSwW3XHHHafdfvz48UpNTdWYMWO0bt06hYSE6IknnlBaWprGjh2rSy65RHPmzKl0m0hJmj9/vubMmaPHH39cvr6+GjFihCIiIvTGG29Ikry9vbVs2TI9/fTTmjt3rg4fPqyLL75YiYmJGjZs2Gnrefjhh9W+fXutWrVKS5cuVevWrRUZGalHHnnEMUrkXC1evFgLFy7Uc889p0OHDikoKEgPPPCA45oS06dP1/Hjx/Xss8+qoqJCF1xwgSZMmKDdu3fr008/ldVq1c0336xff/1Vq1ev1qpVqxQQEKDo6GiNHDlSjz/+uHbv3q3OnTufV53SyQthWiwWvfLKK44wqU+fPlq8eLHi4uK0ZcuWSndSOZ2aPKf6Zvjw4frll1+0Zs0avf766+rdu7eee+65M76PfXx8ZLFYNG7cOL3wwgt66KGHanT+UlNT9eSTT2rixIlq2bKl/vrXvyo9PV1jxozR5s2bHRc2BQDgzzzsXOkHANDE/Prrr7r66qs1b968M3bsgT/76aefdP311+vZZ5/VP/7xD3eXAwBAg8CIBwAAgBr4/PPP9fHHH0tSrW9PCgBAU0bwAAAAUANPP/209u7dqzvvvFPh4eHuLgcAgAaDqRYAAAAAAMBluJ0mAAAAAABwGYIHAAAAAADgMgQPAAAAAADAZQgeAAAAAACAyxA8AAAAAAAAlyF4AAAAAAAALkPwAAAAAAAAXIbgAQAAAAAAuAzBAwAAAAAAcBmCBwAAAAAA4DIEDwAAAAAAwGUIHgAAAAAAgMsQPACoYvTo0Ro9evRp1w8YMEDTp0+vw4oAAEBDM3r0aHXt2lU7duyodj3tCaDpIHgAAAAA4BJWq1UzZsxQRUWFu0sB4EYEDwAAAABcws/PTz/++KNSUlLcXQoANyJ4AHBeBgwYoOTkZN11113q2bOnLBaLJGn//v2aMWOGoqOjZTabNWLECH3yySeVHvvFF1/otttuU0REhC6//HLFxsYqJyfHHU8DAAC4wF//+lfddNNNWrp0qXbu3Hna7crLy/X000/r2muvVbdu3dSzZ0/dc889+u677ypt98Ybb2jYsGHq0aOHzGazhg4dqnXr1jnWv/XWW+rataveeOMNRUVFqV+/fvrxxx9ltVr14osvavDgwTKbzerRo4duv/12ZWVlOR577NgxzZ49W/369VO3bt103XXXadmyZc4/KUATRPAA4LxlZGQoLCxMixYt0tChQ/Xbb79pxIgR2rRpkyZNmqRFixapU6dOiouL09q1ayVJe/bs0YQJExQeHq60tDQlJSUpJydHY8eOlc1mc/MzAgAAzvLYY4+pbdu2Z5xyMXXqVL355psaO3asli1bpunTp+uHH37QpEmTZLfbJZ1sb1gsFl199dVasmSJnnrqKTVr1kxTpkxRfn6+Y19Wq1UvvPCCkpKS9PDDD6tz585asGCBUlJSdNttt2np0qVKTEzUoUOHNHHiRJWVlUmS5s6dq8zMTE2bNk0vv/yyrr76aj3xxBN66623XH+SgEbO090FAGj4OnTooOnTp8tgOJllPvXUUzp48KA++OADXXjhhZKk6Oho3X333XryySc1ePBgZWdnq7y8XOPGjVNAQIAkKSgoSJ988onKysrk6+vrtucDAACcp1WrVpo9e7YmTJiglJQUTZo0qdL6iooKHTlyRI8//riuv/56SVLv3r115MgRzZ8/XwcOHFCHDh20Z88e3XvvvYqLi3M89oILLtCwYcO0detWdezY0bF8/Pjxuuqqqxw/79+/X5MmTap08WwfHx89+OCD2rVrlyIiIrRp0yZdeeWVuuGGGyRJffr0UYsWLdSmTRtXnBagSSF4AHBOPDw8HP++5JJLHKGDJG3atEkRERGO0OGUG2+8UTNmzFBOTo4uu+wyeXt7a8SIEbr++usVHR2tXr16yWw219lzAAAAdWPAgAG68cYbtXTpUl177bUKDw93rPPy8tLLL78s6WRAkJeXp5ycHP3nP/+RJB0/flySHHfAKCkp0c8//6yff/7ZMVXi1DandOnSpdLPTz/9tCTp4MGDysvLU25urj799NNKj+3Tp49ee+01FRYWqn///oqOjq4UcgA4dwQPAKpo0aKFiouLT7u+oqJCzZs3d/zcrl27Sut///13XXDBBVUed2q7w4cPq3PnzkpPT9eLL76of/3rX1q+fLlatWqlkSNHauLEiZWCDAAA0PDNnDlTWVlZmj59ulavXl1p3eeff67k5GTl5OSoZcuWCgsLU8uWLSXJMdXil19+kcVi0ZdffilPT0+FhoYqLCys0jan+Pv7V/p5x44dmj17tnbs2CEfHx917txZnTp1qvTYxx57TIGBgVq7dq1mz54tSYqIiJDFYlHXrl2dfDaApoWWPYAq2rVrp/3791e7rqKiQgcPHqwSNvxR69at9dtvv1VZfuDAAUlyDFk0m81avHixNm7cqOXLl6tv37564YUXtH79eic8CwAAUJ+0bt1as2bN0g8//KC0tDTH8l9++UVxcXG69NJL9e9//1tbt27VP//5T/Xv39+xjc1m09ixY1VUVKR//etf2r59u9auXatx48ad9bilpaW6//77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UhdeeKHi4+M1b948HTt2TM8884wGDhyowYMH6/nnn9fy5cs1atQobdmyRe+++65SU1NrfRyj0VilEWA0GuXh4eH4U1898sgj8vPz05tvvqn27dvrt99+09y5c3Xvvffq3Xfflaenc1+2pUuXOnV/rnLqdavutQXQOGVmZmrWrFmKjIxUQkKCQkJClJubq5UrV2rWrFlKTExUdHS0u8tEE8fnEgCcGf2w6jWlflidj1Nt1qyZVq5cKaPRqEGDBmnQoEEKDAxUcnKy2rRpo2XLlmn9+vXq06ePZs6cqZkzZ+qKK66o6zLdasuWLbrmmmvUvn17SVK7du0UHx+vyy67TIcPH9ZPP/2kcePG6aqrrpLZbNb111+v//znP47Hf/rpp7r99tsVGRmpyy67TDExMfr5558lSW+99ZaGDRume++9V7169dK7776r0aNHa9GiRe54qgBwWlarVSkpKYqMjFRycrLCw8PVokULhYeHKzk5WZGRkUpNTWV+PQAAcAr6Ya7jlgmyAQEBeuaZZ/Tf//5XX331lZ544gm1atVK0snhiq+99pq2bt2qjz/+WMOGDXNHiW51ww03KCEhQbNmzdK6deu0d+9etW/fXvPnz1fbtm314IMPqkuXLvr3v/+tzZs3KyoqSrNmzZIkFRQUaOLEiRo7dqyysrK0YcMG2e12paSkOPb/zTffaMiQIfriiy90zTXXuOlZAsCZZWdnq6CgQKNHj65yPQeDwaCYmBjt27dP2dnZbqoQAAA0JvTDXKfOp1rg7JKSktSnTx+tW7dOFotFJSUluuiii/Tggw/qxhtv1JIlSxQQECC73a69e/eqVatWKiwslCS1bdtW77//vi666CKVlpaqoKBAbdq0cayXTo46GTp0KBdmA1CvFRUVSZJCQkKqXR8aGlppOwAAgPNBP8x1CB7qIYPBoKFDh2ro0KGy2+366aef9M4772jq1Klq3769SktLFRsbqwMHDuiSSy5R27ZtHbeladasmd577z299tpr8vDwUJcuXVRaWlppPlL79u2b5JsdQMPi7+8vScrNzVV4eHiV9Tk5OZW2AwAAOB/0w1ynaT7reuzzzz9XRESEiouLJZ28kEfnzp316KOPqmvXrtqyZYsmTpyoSZMm6csvv1RGRoYGDx7sePwHH3yg9PR0rVy5UpmZmXrppZfUtWvXSseozxd0AYBT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d65OnDghSTp48KAmT56syy+/XH369NGkSZP0+++/S5L27t2rhx9+WJGRkerbt68effRR7d+/33GMb775RqNHj9bll1+ua6+9VsuXL5fdbq/DZw4AAAAA7kE/7NwRPDRAv//+u95//31de+211a6fOnWqRo8erc2bN+uVV17R+vXr9cknn0iSJk6cqNLSUn300Uf65JNPdPjwYc2ePVvHjx/XvffeK6PRqI8++kgffPCBJGn8+PE6ceKECgsLddddd+m6667TF198odTUVK1atUqvv/56nT1vAAAAAHAX+mHnjqkWDcT48eNlNBpls9l05MgR+fn5acmSJdVu6+3trQ8++EAmk0mXX365MjMzZTAYtHfvXm3atEnr169XmzZtJEnz589XcXGxNm/erD179mj16tXy9fWVJM2ePVu9e/fWzp079dVXX+mSSy7RqFGjJEmdO3fWfffdp/T0dN1+++11cxIAAAAAoA7RD3MOgocG4oUXXnDMLSovL1dGRobuuusuvf766woPD6+07auvvqpFixZp9uzZOnDggP7+979r1qxZOnDggCSpU6dOjm3bt2+v9u3ba9euXWrTpo3jzS6dHEpkMpm0d+9e7d27V99884169erlWG+z2WQ0Gl35tAFAkmS1WpWdna2ioiL5+/vLbDbz+wcAALgc/TDnIHhogHx8fHTffffpxRdf1BdffFHpDX/s2DHt3r1bs2bNkqenp3JzczVz5kwlJyfrsccekyTl5+fr4osvliTt3r1b7733nqKjo3Xo0CGVlpY63vQlJSU6dOiQ2rdvr8DAQPXp00cvv/yy41iHDh3SkSNH6u6JA+eJzmvDlJmZqZSUFBUUFDiWBQYGKi4uTtHR0W6sDAAANCX0w84d13hogE6cOKHVq1fr8OHD+tvf/lZpnYeHhx555BEtW7ZMJ06cUPv27eXp6ak2bdooICBAffv21ZNPPqnDhw+rtLRUTz31lPbs2aPu3burc+fOSkhIUElJiUpKSjRr1ixddNFF6tmzp4YMGaLt27dr7dq1OnHihPbv36/x48dr/vz5bjoLQO1kZmbqjjvu0MSJE5WYmKiJEyfqjjvuUGZmprtLwxlkZmbKYrEoNDRUaWlpWr9+vdLS0hQaGiqLxcLrBwAA6gz9sHPHiIf/L/9I3Xzrea7HGTNmjOObWQ8PD1188cVauHChevbsWWk7Ly8vpaWl6YknntCSJUtkNBrVr18/TZ48WZK0YMECzZ8/X//4xz904sQJDRgwQI899pg8PT21ZMkSzZ8/X4MGDVJFRYWuvPJKvfLKK/L09FSnTp20dOlSLViwQElJSTIajbrqqqsc6R1Qn53qvEZGRiohIUEhISHKzc3VypUrZbFYlJiYyDfn9ZDValVKSooiIyOVnJwsg+FkVh4eHq7k5GTFx8crNTVVUVFRjFwBAKABq4u+GP0w9/KwN7T7cJyF1WrV9u3b1aNHjyoN0fLycuXm5iokJEQ+Pj6SpMLCQsWMGqVjFRV1VqO3l5fSMzIUEBBQZ8dsDKp7/YCzsVqtuuOOOxQaGlqp8yqdnB8XHx+v3NxcrVq1is5rPbNt2zZNnDhRaWlpVeZQStLOnTsVGxur5557ThEREW6osP4602chnIfzDAA1c7p2fF33xeiHnZsz9cNq+lnY5Ec8BAQEKD0jQ8XFxXV2TJPJxJsdqCPZ2dkqKChQQkJCpdBBkgwGg2JiYhQbG6vs7Gw6r/VMUVGRJCkkJKTa9aGhoZW2AwAADUtd98Xoh7lPkw8epJNveN6AQONE57Xh8vf3lyTl5uZWO+IhJyen0nYAAKDhoS/WNHBxSQCN2h87r9Wh81p/mc1mBQYGauXKlbLZbJXW2Ww2paenKygoSGaz2U0VAgAAoCYIHgA0anReGy6j0ai4uDhlZWUpPj5eO3fuVFlZmXbu3Kn4+HhlZWUpNjaWufUAAAD1HMEDgEaNzmvDFh0drcTERP3000+KjY3Vddddp9jYWOXk5HA3EgAAgAaCazwAaPROdV5TUlIUGxvrWB4UFETntYHw8PBwdwkAAAA4RwQPAJqE6OhoRUVFKTs7W0VFRfL395fZbGakQz2XmZkpi8WiyMhIJSQkKCQkRLm5uVq5cqUsFgvBEQAAQAPgluBh3bp1mjx5sry9vR3LBg4cqKeeekoJCQlavXq1mjVr5lg3ffp03XbbbS6rp7CwkNtpAk2A0WjklpkNiNVqVUpKiiIjI5WcnOy4HWp4eLiSk5MVHx+v1NRURUVFESABANBA1WVfjH6Y+7gleNixY4eGDh2qefPmVbtuzpw5uvnmm+uklsLCQo2KGaWKYxV1cjxJ8vL2UkZ6Bm96ADiD7OxsFRQUKCEhwRE6nGIwGBQTE6PY2FhlZ2cTKAEA0ADVdV+Mfpj7uC14+Mc//lFleUVFhX744Qd169atzmopLi5WxbEK2XrbZG9ld/nxPA57qGJThYqLi2v8hh8wYIAOHDggT8+TL5fdbldwcLBiYmJ0yy23uLJcAHCboqIiSVJISEi160NDQyttBwAAGpa67IudSz9Moi/mLHUePNhsNn3zzTdq3ry5li5dKqvVqujoaE2ePFl5eXk6ceKEnn/+eW3ZskV+fn4aPny47r///irfdp2N1Wqtdpndbnf8+SN7K7vU5ryeWo3Y9X/H/XMNp32M3a5Zs2Zp2LBhkk4GNBs2bFB8fLwOHTqkMWPGuKTW+ubU62a1Wqt9fQE0Lm3anPyl/NNPP6lr165V1u/evduxHb8TKuN81C3ONwCc2Zn6YVLd9MXOpR92atum3hc7Uz+spp+BdR48HDx4UF27dtWgQYP0/PPP69ChQ5o2bZqmTJmiu+66S71799bo0aO1cOFCfffdd4qLi5PBYND9999fq+Ps2LGj2uWenp46evSobDabJKm8vPy8n9O5KC8vV1lZWY22tdvtqqioqLR9VFSUHn74YT311FMaOnSo+vXrp9tvv13r169X9+7d9dxzz2njxo1avHix8vLy1KFDB9177726/vrrJUmlpaV65plntHnzZh04cEB+fn669dZbdd9990mSbrjhBt1xxx169913tWfPHl166aWaMmWKUlNTtXXrVgUGBmr27Nl1Ojrl2LFjOn78uL7//vs6OyYA97HZbGrbtq1SU1N17733VgqgbTabli1bprZt28pms2n79u3uKxRN3unaHACA//Pnfpjknr5YbfphEn0xyTn9sDoPHtq1a6eMjAzHz82bN9eUKVN06623auHChVqxYoVjndls1l133aV169bVOnjo3r17lYuNlZeXKy8vT82bN5ePj48kOf6uaz4+PmrRokWNtvXw8JCXl1eV7a+99lolJSVp165dkqR9+/bpP//5j44fP65ffvlFkyZN0pNPPqmrr75aX3/9teLi4hQQEKC///3veuqpp1RQUKDVq1fLz89PH330kSZOnKgbb7xRwcHB8vDw0DvvvKOXX35Zvr6+Gj58uMaOHaulS5cqPDxc06ZNU0pKil599VWnn5vTMRgMatasmTp37uy21w1A3Zo4caJmzZql1atXa+TIkY67WqxatUrffvutZs2apZ49e7q7zHrHarXSGa5D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+59T9v/EE08oLS3NKfsCUDO0OdCQ0OZoWmh31G8ED41ARkaG7rjjDq1YsUInTpxw+v579eqlbdu2OX2/qFu5ubmaNm2a+vXrp4iICA0cOFALFizQkSNHJElhYWHauHFjtY91VkPw22+/1eDBg897P6j/fvjhB914442qqKjQSy+9pC1btuijjz7SjTfeqLi4OGVmZp73MQ4dOuSESgHUBm0O1ARtDtQ12h31H8FDA5eVlaWioiJNnz5dNptNH374oWPd/v37NX78ePXs2VNXX311lbTvl19+0fjx49WnTx/1799fzzzzjCoqKqoc48/fWtT0cag/tm7dqptvvlmdOnXS22+/rW3btumll17S119/rXvvvVdWq/WMj3dWQ7CkpETHjx8/7/2g/rNYLOrbt6/mzZunSy65REajUSaTSUOHDlVCQoLjffDFF19oxIgR6tWrl2644QatXbvWsY/p06fLYrFo/PjxioiI0NVXX60VK1ZIklJSUvTuu+/q3Xff1Y033ihJ2rt3rx5++GFFRkaqb9++evTRR7V//37H/jZv3qxRo0apV69eGjBggJ599ll+dwG1QJsDNUGbA+5Au6MBsKNBmzBhgn3BggV2u91uX7JkiX3YsGGOdSNHjrTHxcXZS0pK7Pn5+fahQ4fau3TpYrfb7fYjR47Y+/fvb1+wYIG9vLzcnp+fbx8xYoRjX6tXr7b379/fbrfb7V9++WWNH4f66YYbbrAnJCRUWX7gwAH7hAkT7Lm5ufYuXbrYn376afuNN95o79Gjh3348OH2Xbt22e32yu+BPXv22Lt06WL/17/+Ze/fv7+9Z8+e9rvvvtu+b98+u91ut5eUlNgffvhhe+/eve1XXnml/d5777Xv3r3b/ssvv9i7d+9u79Kli71Hjx72rVu32qdNm2Z/8MEH7dddd529T58+9ry8PPuWLVvso0ePtvft29ferVs3+80332zftm2bo46///3v9meffdbeu3dve+/eve1JSUn2Y8eO1cl5RM3s27fP3qVLF/sXX3xxxu2+++47u9lstn/44Yf2EydO2Lds2WLv06eP/bPPPrPb7Xb7tGnT7OHh4fb//ve/9uPHj9v/+c9/2v/617/aCwoKHOunTZtmt9vt9oqKCvu1115rf+SRR+yHDx+2//777/ZHHnnEfvPNN9uPHz9u/+mnn+zdunWzL1++3H7s2DH7zz//bB8yZIh9zpw5rj0ZQCNCmwM1QZsDdY12R8PAiIcGbO/evfr88881atQoSdKtt96q3bt3a9OmTdq7d682b96syZMny9fXV0FBQXrggQccj92wYYMqKir0yCOPyNvbW0FBQZo4caIyMjLOeMxzfRzc55dfftGPP/5Y7XDDdu3aKTU1VRdffLEkadOmTXr55ZeVlZWlNm3a6Iknnjjtfjds2KC3335bH374oX777TelpqZKkpYtW6bS0lJlZmbqP//5j9q3b68FCxbowgsv1EsvvSRJ2rZtm2MY5eeff67nnntOH330kTp06KAJEyZo0KBB+uyzz7Rx40ZddNFFevLJJx3HLSwsVG5urj755BO9/vrr2rBhg+PYqB8KCgokSYGBgY5lWVlZ6tWrl3r16qWIiAgNGjRIr732mq6++mpde+21MhqN6tmzp2699dZKv0/69Omjvn37ytPTU8OHD5fVatUvv/xS5ZibN2/Wnj17NHv2bPn5+alVq1aaPXu2vv/+e+3cuVPvvvuuwsLCdNddd8nLy0vBwcF69NFH9cYbb8hms7n+pAANHG0O1ARtDrgD7Y6GwdPdBeDcrVq1SidOnNDQoUMdy06cOKFly5Zp7NixkqSOHTs61l100UWOf+/du1cHDx7U5Zdf7lhmt9t1/PhxFRUVnfaYZ3ucv7+/U54bnOfgwYOSTn7gn80999zj2G7gwIFaunTpabcdM2aMWrVqJUkaMGCAY1ikj4+Pvv/+e7399tvq27evkpOTZTCcPuPs0aOHunTpIkmyWq16/fXXFRwcrGPHjmnv3r0ymUzasWOHY3sPDw8lJCTI19dXvr6+uv/++7VkyRI9/PDDZ31+qBvt27eXdLLBFhISIkmKjIzU5s2bJZ28kNzixYu1d+9effnll+rVq5fjsVartdLvqlP7kqRmzZpJUrUf2EVFRWrTpo18fX0dy3x9fWUymbR3714VFRXpwgsvrPSYCy64QOXl5SoqKqp0HABV0eZATdDmgDvQ7mgYCB4aqGPHjunNN9/U3LlzdeWVVzqW//DDDxo7dqzuu+8+SdKePXt0ySWXSPq/NFA6mQhedNFFWr9+vWNZaWmpioqK1LZt29Me91wfB/c59YvtwIEDjm8Z/ui3335zfPCbTCbH8mbNmp1xHuYfGxWenp6y2+2STjYOvLy89OabbyoxMVEXXnihHn30UV177bXV7qdDhw6OfxuNRm3cuFFjxoxRWVmZOnfuXGnfktS6dWu1adPG8XNQUFCl+XRwv06dOql79+564403dMUVV5x2u8DAQN18881KTEx0LNu/f3+l17s2xzx06JBKS0sdjYCSkhIdOnRI7du3V6dOnfTRRx9Veswvv/wiLy8vtW7dutbHA5oS2hyoKdoccAfaHQ0DUy0aqHfffVceHh4aMmSIAgMDHX/69eunLl26aO3atYqKitK8efP0+++/68CBA1q8eLHj8f3799eRI0e0dOlSVVRU6PDhw5o2bZomTZokDw+P0x73XB8H9+nUqZO6dOmidevWVVlXVFSk/v3767333nPa8Xbt2qUBAwbozTff1MaNGzVs2DBNmjRJJSUl1W7/x/fN119/rTlz5uiZZ57R//73P7366qvq27dvpe1LSkp09OhRx8+//vprpW/ZUD8kJyfr888/1+OPP67c3FzZ7XaVlpbq7bff1qJFi9ShQweNGDFC7733nv773//KZrPp559/VkxMjJYtW1ajY3h5eTneV927d1fnzp2VkJCgkpISlZSUaNasWbrooovUs2dP3XDDDfrpp5/06quvqqKiQr/88osWLlyoIUOGyMvLy5WnAmjwaHOgpmhzwF1od9R/BA8N1KpVqzRkyBDHEKA/uu222/TOO+/oySeflJ+fn/r376/hw4dX+pbC19dXy5cv18aNG9WvXz8NHDhQBoPhrPemPdfHwb0ef/xxrV69WosXL9ahQ4dkt9v13Xffafz48QoPD9egQYOcdqw33nhDU6dOVVFRkWNoYosWLeTl5SVvb29JOm2DoKSkRAaDQT4+PpKk7du3a8WKFZWuAGy1WvXEE0/o2LFjysnJ0csvv6wRI0Y4rX44R5cuXfTee+/Jx8dH48eP19/+9jdFR0frX//6l+6//36tWLFCl112mRYuXKiFCxfq8ssvV0xMjAYMGKBHH320Rse4/vrrtXXrVl111VXy9PTUkiVLdOLECQ0aNEj9+/fX8ePH9corr8jT01MXXHCBli5dqg8//FBXXnmlRo4cqb59+8pisbj4TAANH20O1AZtDrgD7Y76z8N+LmNLADQ42dnZeuGFF7R9+3YdPXpU7dq103XXXadx48bJ19dXYWFhWrFihfr06SPp/+bDffrpp9q4caPuvPNO7dq1S7/++quuvvpqffLJJ7rgggskSYsWLdKmTZu0cuVKHTlyRImJicrMzNSxY8cUGhqq6dOn6/LLL1dZWZnuv/9+ffvtt3ruuef0wQcfSJLmz58v6eTc3SeeeEJr1qyRzWbTBRdcoMGDB+vpp5/WZ599pp9++kl33nmnxo8fr9WrV0uSbr/9dsXGxp5xTicAAKg7tDkA/BnBA4AG44+NEQAAAFehzQE4F3EdAAAAAABwGYIHAAAAAADgMky1AAAAAAAALsOIBwAAAAAA4DIEDwAAAAAAwGUIHgAAAAAAgMsQPAAAAAAAAJcheABQY2FhYdq4ceM5Pfb+++/XCy+8IEmyWCyyWCzOLA0AADQytDuAxoO7WgCosbCwMK1YsUJ9+vRxdykAAKCRo90BNB6MeADgFBUVFXriiSf0j3/8QxEREYqMjNScOXN0KtscPXq0Fi1aJEmaPn26pk+f7s5yAQBAA0a7A2hYPN1dAIDG4dVXX9Xnn3+uV199VR06dNC2bdsUExOjgQMHKjIy0t3lAQCARoR2B9CwEDwAcIpbb71VN998s/z9/bV//36Vl5erZcuWKiwsdHdpAACgkaHdATQsBA8AnOLo0aNKTEzUV199pcDAQHXt2lV2u102m83dpQEAgEaGdgfQsBA8AHCKmTNnqnXr1vrvf/8rb29v2Ww2XX755e4uCwAANEK0O4CGheABQK0cPHhQBQUFlZa1a9dOpaWl6tChgwwGg0pLS7V48WKVlpbq+PHjbqoUAAA0dLQ7gMaB4AFArTz88MNVlq1bt04zZ86UxWJR79691bJlS1111VX6+9//rh9++KHuiwQAAI0C7Q6gcSB4AFBju3btOuP6t95667TrbDabDIaTd/CdP3++U+sCAACND+0OoPEgeADgUjabTYcOHdK+ffvUrl07d5cDAAAaMdodQP1kcHcBABq33bt3a8CAAWrfvr2uueYad5cDAAAaMdodQP3kYbfb7e4uAgAAAAAANE6MeAAAAAAAAC5D8AAAAAAAAFyG4AEAAAAAALgMwQMAAAAAAHAZggcAAAAAAOAyBA8AAAAAAMBlCB4AAAAAAIDLEDwAAAAAAACXIXgAAAAAAAAu8/8Ag1YymlkvtO8AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(ncols=2, sharey=True, figsize=(12.8, 4.8))\n", "plt.suptitle('Nokan pituus eri saarilla lajin mukaan')\n", "\n", "# Urokset\n", "sns.boxplot(penguins[penguins['sex']=='Male'], x='species', y='bill_length_mm', hue='island', ax=axs[0])\n", "axs[0].set_title('Uros')\n", "axs[0].set_ylabel('mm')\n", "axs[0].set_xlabel('Laji')\n", "axs[0].legend().set_title('Saari')\n", "\n", "# Naaraat\n", "sns.boxplot(penguins[penguins['sex']=='Female'], x='species', y='bill_length_mm', hue='island', ax=axs[1])\n", "axs[1].set_title('Naaras')\n", "axs[1].set_xlabel('Laji')\n", "axs[1].legend().set_title('Saari')" ] }, { "cell_type": "markdown", "id": "67584653-0030-464a-a3ea-826c6e98d086", "metadata": {}, "source": [ "Seuraavassa vielä n-arvot ja samalla muut tunnusluvut taulukkona." ] }, { "cell_type": "code", "execution_count": 10, "id": "4b2849d6-cf29-4844-a612-8fa23bf93148", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
sexislandspecies
FemaleBiscoeAdelie22.0187.1818186.744567172.0184.25187.0191.75199.0
Gentoo58.0212.7068973.897856203.0210.00212.0215.00222.0
DreamAdelie27.0187.8518525.510156178.0185.00188.0191.00202.0
Chinstrap34.0191.7352945.754096178.0187.25192.0195.75202.0
TorgersenAdelie24.0188.2916674.638958176.0186.00189.0191.00196.0
MaleBiscoeAdelie22.0190.4090916.463517180.0185.75191.0194.75203.0
Gentoo61.0221.5409845.673252208.0218.00221.0225.00231.0
DreamAdelie28.0191.9285716.803749178.0188.50190.5196.00208.0
Chinstrap34.0199.9117655.976558187.0196.00200.5203.00212.0
TorgersenAdelie23.0194.9130435.915412181.0192.00195.0198.00210.0
\n", "
" ], "text/plain": [ " count mean std min 25% 50% \\\n", "sex island species \n", "Female Biscoe Adelie 22.0 187.181818 6.744567 172.0 184.25 187.0 \n", " Gentoo 58.0 212.706897 3.897856 203.0 210.00 212.0 \n", " Dream Adelie 27.0 187.851852 5.510156 178.0 185.00 188.0 \n", " Chinstrap 34.0 191.735294 5.754096 178.0 187.25 192.0 \n", " Torgersen Adelie 24.0 188.291667 4.638958 176.0 186.00 189.0 \n", "Male Biscoe Adelie 22.0 190.409091 6.463517 180.0 185.75 191.0 \n", " Gentoo 61.0 221.540984 5.673252 208.0 218.00 221.0 \n", " Dream Adelie 28.0 191.928571 6.803749 178.0 188.50 190.5 \n", " Chinstrap 34.0 199.911765 5.976558 187.0 196.00 200.5 \n", " Torgersen Adelie 23.0 194.913043 5.915412 181.0 192.00 195.0 \n", "\n", " 75% max \n", "sex island species \n", "Female Biscoe Adelie 191.75 199.0 \n", " Gentoo 215.00 222.0 \n", " Dream Adelie 191.00 202.0 \n", " Chinstrap 195.75 202.0 \n", " Torgersen Adelie 191.00 196.0 \n", "Male Biscoe Adelie 194.75 203.0 \n", " Gentoo 225.00 231.0 \n", " Dream Adelie 196.00 208.0 \n", " Chinstrap 203.00 212.0 \n", " Torgersen Adelie 198.00 210.0 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "penguins.groupby(['sex', 'island', 'species'])['flipper_length_mm'].describe()" ] }, { "cell_type": "markdown", "id": "26d1ff96", "metadata": {}, "source": [ "### Catplot\n", "\n", "Seabornin **catplot**-funktio on oikotie usean kaavion yhdistelmiin kategoristen muuttujien määrittämissä ryhmissä. Lisätietoa https://seaborn.pydata.org/generated/seaborn.catplot.html.\n", "\n", "Seuraavassa edellinen kaavio on toteutettu **catplot**-funktiolla. Kaaviolaji määritetään parametrina `kind='box'`.\n", "\n", "**catplot** palauttaa **Facetgrid**-luokan olion, jolla on omat funktionsa otsikointien ym. ominaisuuksien muotoiluun. Esimerkissä olio sijoitetaan **g**-nimiseen muuttujaan. Lisätietoa https://seaborn.pydata.org/generated/seaborn.FacetGrid.html.\n", "\n", "Yksittäisiin kaavioihin voidaan viitata rivi-ja sarakenumeroiden avulla, esimerkiksi `g.axes[0, 0]`. Rivinumero on pakollinen vaikka kuvia olisi vain yhdellä rivillä kuten tässä esimerkissä." ] }, { "cell_type": "code", "execution_count": 11, "id": "d0fb271a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Naaras')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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z56cPHmSrVu38v7779OsWTOioqLu+nPs4uLCtGnTGDZsGG+99RajR4/O0+u3dOlSIiIiCA0NxdXVlUceeYR169YxZMgQDhw4kGvdTRERuZWdSXdXi4iUGKdOneKJJ55g3rx5dw1dIn934sQJgoODef311+nUqZO1yxERkVJEVwpFRERKud27d/P5558D5HuJDxEREYVCERGRUm7hwoWcPn2aAQMG3LI+p4iIyL1o+KiIiIiIiIgN05IUIiIiIiIiNkyhUERERERExIYpFIqIiIiIiNgwhUIREREREREbplAoIiIiIiJiwxQKRUREREREbJhCoYiIiIiIiA1TKBQREREREbFhCoUiIiIiIiI2TKFQRERERETEhikUioiIiIiI2DCFQhERERERERumUCgiIiIiImLDFApFRERERERsmEKhiIiIiIiIDVMoFBERERERsWEKhSLFoH///vTv3/+O24OCgpg4caIFKxIREbjZP9euXZvDhw/fdrv6ZxGxRQqFIiIiYlOysrKYNGkSmZmZ1i5FRKREUCgUERERm+Lu7s6vv/7Km2++ae1SRERKBIVCESsLCgpi7ty5DBw4kEaNGjFt2jQAzpw5w6RJk2jbti316tWjV69efPHFF7mO3bNnD71796Zhw4Y0bdqUF198kd9++80aT0NEpNR45JFHeOqpp1i5ciU//fTTHfe7du0aCxcupEOHDtStW5dGjRrx/PPPc+TIkVz7bdy4kR49etCgQQPq1atHt27diI2NNW/fsmULtWvXZuPGjbRp04bHHnuMX3/9laysLFasWEHnzp2pV68eDRo04Nlnn+Wbb74xH5uRkcHMmTN57LHHqFu3Lv/4xz9YvXp10b8oImLTFApFSoDo6GgCAgJYvHgx3bp149y5c/Tq1Yt9+/YxZswYFi9eTI0aNRg5ciQff/wxAAkJCYwYMYI6deqwbNkywsPD+e233xg6dCjZ2dlWfkYiIiXb5MmTqVSp0l2HkYaFhbFp0yaGDh3K6tWrmThxIsePH2fMmDGYTCbgZv89bdo0nnjiCZYvX05kZCROTk6MHz+exMRE87mysrJ46623CA8P5+WXX8bf358FCxbw5ptv0rt3b1auXMmsWbO4ePEioaGhpKenAzBnzhx27tzJhAkTWLVqFU888QSvvvoqW7ZsKf4XSURshqO1CxARqFq1KhMnTsTe/ubnNJGRkVy4cIHt27fj4+MDQNu2bXnuueeIiIigc+fO/Pjjj1y7do1hw4bh6ekJQLVq1fjiiy9IT0/Hzc3Nas9HRKSkq1ChAjNnzmTEiBG8+eabjBkzJtf2zMxM0tLSmDp1KsHBwQA0a9aMtLQ05s+fz9mzZ6latSoJCQm88MILjBw50nyst7c3PXr04LvvvqN69ermx4cPH87jjz9u/vrMmTOMGTMm18RkLi4ujBo1imPHjtGwYUP27dtHq1atCAkJAaB58+aUL18eDw+P4nhZRMRGKRSKWImdnZ35335+fuZACLBv3z4aNmxoDoQ5unbtyqRJk/jtt9+oX78+BoOBXr16ERwcTNu2bWnSpAn16tWz2HMQESnNgoKC6Nq1KytXrqRDhw7UqVPHvM3Z2ZlVq1YBN8NbfHw8v/32G//5z38AuH79OoB5ptLU1FT++OMP/vjjD/Pwz5x9ctSqVSvX1wsXLgTgwoULxMfH8/vvv/Pll1/mOrZ58+Zs2LCB5ORk2rVrR9u2bXMFUBGRoqBQKFIMypcvT0pKyh23Z2ZmUq5cOfPXlStXzrX90qVLeHt733Jczn6XL1/G39+fdevWsWLFCj744APWrFlDhQoV6NOnD6GhoblCpoiI3N6UKVP45ptvmDhxIps3b861bffu3cydO5fffvsNV1dXAgICcHV1BTAPHz158iTTpk3j22+/xdHRkQcffJCAgIBc++S47777cn19+PBhZs6cyeHDh3FxccHf358aNWrkOnby5Ml4eXnx8ccfM3PmTAAaNmzItGnTqF27dhG/GiJiq/SuUaQYVK5cmTNnztx2W2ZmJhcuXLglCP5VxYoVOXfu3C2Pnz17FsA8bKhevXosWbKEvXv3smbNGlq3bs1bb73Fp59+WgTPQkSk7KtYsSIzZszg+PHjLFu2zPz4yZMnGTlyJA8//DD//ve/+e6773jvvfdo166deZ/s7GyGDh3K+fPn+eCDDzh06BAff/wxw4YNu2e7V65cYfDgwZQvX55PPvmE77//ns2bN9OzZ89c+zk7OzNixAi2b9/Of/7zH6ZNm0ZCQgJjx44tuhdBRGyeQqFIMWjWrBmJiYn8+OOPt2z7/PPPycrKokWLFnc8vmnTpnz//fckJCTkevzjjz+mSpUq+Pr6smbNGoKCgsjMzMTZ2ZmWLVsye/ZsAP7888+ifUIiImVY+/bt6dy5MytWrODChQsA/PTTT2RkZDBs2DBq1qxp3nf37t3AzSt5Fy9e5Pfff6dXr17Uq1cPR8ebA7B27doFcNdJv3777TdSUlIYMGAADz30kHl0x1+PvXbtGh07djTPNlq9enX69u1LSEgISUlJRfwqiIgt0/BRkWIQHBzMv/71L4YMGcKwYcOoU6cO2dnZfPfdd6xcuZKQkBAaNWp0x+Off/55Pv74Y55//nleeuklPDw8+PDDD/n222+ZO3cu9vb2tGjRggULFjBy5Ej69euHg4MDGzZswNnZOdcn2SIicm9Tp07l22+/NY/SqFOnDo6OjkRGRvLCCy+QmZnJli1b+OqrrwBIT0/Hx8eHGjVqEB0djZeXFxUqVOC///0v//rXvwC4evXqHdt74IEHcHNz46233sLR0RFHR0c+++wzNm3aZD7WxcWFOnXqsGTJEpycnAgICOD3339n69atdOzYsXhfEBGxKbpSKFIMnJycWLduHb1792bjxo0MGzaMkSNH8vnnnzNmzBgWLFhw1+OrVKnCe++9R926dZkzZw6hoaH8+eefLF261Dy06OGHH+att97iypUrvPLKK7z00kukpKSwevVqHnzwQUs8TRGRMsNoNDJjxgzz176+vixcuJDk5GRGjBhhXkP23Xffxc7OjgMHDgCwdOlSPD09mThxIi+//DKHDh1i2bJlPPjgg+Z9bsfd3Z2lS5diMpkIDQ0lLCyMxMRE1q1bh6urq/nYWbNm0aNHD1avXs0LL7zA0qVL6dWrV65aRUQKy87097ugRURERERExGboSqGIiIiIiIgNUygUERERERGxYQqFIiIiIiIiNkyhUERERERExIYpFIqIiIiIiNgwhUIREREREREbVuZCoclkIisrC620ISJSOqkfFxERsawyFwqzs7M5dOgQ2dnZ1i5FREQKQP24iIiIZZW5UCgiIiIiIiJ5p1AoIiIiIiJiwxQKRUREREREbJhCoYiIiIiIiA2zSihMSUkhLCyM5s2b07RpU1588UXOnDkDwA8//MDTTz9Nw4YNCQoKYuPGjdYoUURERERExCZYJRSOGjWK9PR0/v3vf/Of//wHBwcHpk6dyqVLlxg6dChPPfUU+/fvZ86cOcybN48ff/zRGmWKiIiIiIiUeY6WbvCnn37ihx9+YM+ePbi5uQEwe/Zszp49y44dOzAa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zYmjoyMmkwm4+SbD2dmZTZs2MWvWLHx8fBg7diwdOnS47XmqVq1q/reDgwN79+5lyJAhpKen4+/vn+vcABUrVsTDw8P8dbVq1XINbZH/fc+Tk5N54IEHAGjZsiUHDhwAbk4CsmTJEk6fPs23335LkyZNzMdmZWXl+r+acy64+TMB3PaX//nz5/Hw8MDNzc38mJubG0ajkdOnT3P+/Hl8fHxyHePt7c21a9c4f/58rnbEMtSHlx7qx22P+nGR/FEotJKMjAw2bdrEnDlzaNWqlfnx48ePM3ToUAYNGgRAQkICfn5+wP8+9YKbn3zVrFmTTz/91PzYlStXOH/+vPleidsp6HG2rEaNGtSqVYvY2Nhcb8Tg5i+Adu3aMW/evCJr79ixYwQFBfHcc8+RmprK+vXrGTNmDN9+++1t97ezszP/+4cffmD27Nls2LCBunXrArB69Wp+//138z6pqalcvXqVcuXKATfvjfnrG1e5+T0PDAxk48aNtGjR4o77eXl50b17d2bNmmV+7MyZM7nevOWnzYsXL3LlyhXzG4rU1FQuXrxIlSpVqFGjBjt27Mh1zMmTJ3F2dqZixYr5bk8KR3146aJ+3PaoHxfJHw0ftZJt27ZhZ2dHly5d8PLyMv957LHHqFWrFh9//DFt2rRh3rx5XLp0ibNnz7JkyRLz8e3atSMtLY2VK1eSmZnJ5cuXmTBhAmPGjMn1y+XvCnqcrZs6dSqbN29myZIlXLx4EZPJxJEjRxg+fDh16tShY8eORdbWxo0bCQsL4/z587i5ueHm5kb58uVxdnbGYDAAN3/J3E5qair29va4uLgAcOjQIdauXZvrJvasrCxeffVVMjIy+O2331i1ahW9evUqsvrLirlz57J7926mTp3K77//jslk4sqVK3z44YcsXryYqlWr0qtXLz755BP++9//kp2dzR9//EG/fv1YvXp1ntpwdnY2fy8DAwPx9/dn+vTppKamkpqayowZM6hZsyaNGjUiJCSEEydO8K9//YvMzExOnjzJokWL6NKlC87OzsX5UshtqA8vfdSP2x714yJ5p1BoJevXr6dLly7mYQh/1bt3bz766CMiIiJwd3enXbt29OzZM9en0W5ubqxZs8Y8C1n79u2xt7e/51o5BT3O1jVr1ox169bxyy+/EBISQqNGjRg9ejQtWrRg5cqVt/0+FtQrr7yCr6+vuZ0tW7awdOlSDAYDtWrVonHjxjz66KO3nUq7devW9OnTh759+9K0aVNmzpxJ//79uXDhAufOnTPvV7FiRZ544gkGDBhA9+7dGTx4cJHVX1bUqlWLTz75BBcXF4YPH07jxo1p27YtH3zwAYMHD2bt2rXUr1+fRYsWsWjRIpo2bUq/fv0ICgpi7NixeWojODiY7777jscffxxHR0eWL1/OjRs36NixI+3ateP69eu88847ODo64u3tzcqVK/nss89o1aoVffr0oXXr1kybNq2YXwm5HfXhpY/6cdujflwk7+xMBbk+LiKl0t69exkwYADHjh2zdikiIlIA6sdFpDjoSqGIiIiIiIgNUygUERERERGxYRo+KiIiIiIiYsN0pVBERERERMSGKRSKiIiIiIjYMIVCERERERERG6ZQKCIiIiIiYsMUCkVERERERGyYQqGIiIiIiIgNUygUERERERGxYQqFIiIiIiIiNkyhUERERERExIb9P4/7VqngGEgXAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "g = sns.catplot(data=penguins, y='bill_length_mm', x='species', col='sex', hue='island', kind='box', height=4)\n", "\n", "g.fig.subplots_adjust(top=0.85)\n", "g.fig.suptitle('Nokan pituus eri saarilla lajin mukaan')\n", "g.set_axis_labels('', 'mm')\n", "g.legend.set_title('Saari')\n", "g.axes[0, 0].set_title('Uros')\n", "g.axes[0, 1].set_title('Naaras')" ] }, { "cell_type": "markdown", "id": "82920055-39f7-484f-b849-832571581bb3", "metadata": {}, "source": [ "### Muuta huomioitavaa\n", "\n", "#### Fontit\n", "\n", "Tekstiä lisäävät funktiot (**plt.title**, **plt.xlabel**, **plt.xticks** jne.) tunnistavat tekstiin liittyviä parametreja https://matplotlib.org/stable/api/text_api.html#matplotlib.text.Text kuten esimerkiksi **fontsize** ja **fontstyle**.\n", "\n", "Jos haluat tehdä kerralla koko muistiota koskevia fonttimuutoksia, niin katso [matplotlib7.ipynb](https://github.com/taanila/kaaviot/blob/master/matplotlib7.ipynb).\n", "\n", "#### Värit\n", "\n", "Kaavion väripaletin voit vaihtaa antamalla kaavionluonti-komennossa arvo **palette**-parametrille. Esimerkiksi `palette='Set1'` muuttaa paletiksi **Set1** tai `palette=['green', 'red']` muuntaa kahdenvärisiä pylväitä sisältävän kaavion pylväät vihreiksi ja punaisiksi.\n", "\n", "Jos haluat käyttää kaikissa muistion kaavioissa samaa vaihtoehtoista palettia, niin käytä **sns.set_palette**-funktiota, esimerkiksi `sns.set_palette('Set1')`.\n", "\n", "- Värejä https://matplotlib.org/stable/gallery/color/named_colors.html.\n", "- Paletteja https://matplotlib.org/stable/gallery/color/colormap_reference.html.\n", "\n", "#### Kuvion koko\n", "\n", "Kuvion (**Figure**) oletuskoko on **6.4 x 4.8**. Jos haluat vaihtaa koon, niin luo kuvio ennen kaavion luontia, esimerkiksi `plt.figure(figsize=(4, 3))`. Usean kaavion yhdistelmän koon voit vaihtaa **subplots** funktion **figsize**-parametrilla. Funktiolla **catplot** luotavan kaavion kokoa voit säätää **height**-parametrilla." ] }, { "cell_type": "markdown", "id": "d58017cb-eedc-46b9-a492-86486422f06d", "metadata": {}, "source": [ "### Lisätietoa\n", "\n", "https://tilastoapu.wordpress.com/python" ] } ], "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.13.9" } }, "nbformat": 4, "nbformat_minor": 5 }