{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Päivitetty 2024-04-14 / Aki Taanila\n" ] } ], "source": [ "from datetime import datetime\n", "print(f'Päivitetty {datetime.now().date()} / Aki Taanila')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Seaborn\n", "\n", "Seaborn on matplotlibin päälle rakennettu grafiikka-paketti, joka tarjoaa helppoja tapoja kaavioiden luontiin suoraan datasta. Kaavioita voin muotoilla kuten mitä tahansa matplotlib-kaavioita, joten muotoilu edellyttää matplotlib-osaamista.\n", "\n", "Tässä muistiossa on esimerkkejä seuraavista kaaviolajeista:\n", "\n", "* **countplot** - lukumääräyhteeveto kategoriselle muuttujalle\n", "* **histplot** - luokiteltu jakauma määrälliselle muuttujalle\n", "* **barplot** - virhemarginaaleilla varustettu pylväskaavio keskiarvoista\n", "* **boxplot** - viiden luvun yhteeveto (pienin, alaneljännes, mediaani, yläneljännes, suurin)\n", "* **scatterplot** - hajontakaavio, joka havainnollistaa kahden määrällisen muuttujan välistä riippuvuutta\n", "* **jointplot** - hajontakaavio täydennettynä muuttujien jakaumilla\n", "\n", "Tässä muistiossa on myös esimerkkejä usean kaavion kuvioista käyttäen **catplot**-, **displot**- ja **relplot**-funktioita.\n", "\n", "Seaborn-kaavioita on helppo laatia, jos muistaa keskeiset parametrit:\n", "\n", "* **data**\n", "* **x**\n", "* **y**\n", "* **hue** (minkä muuttujan mukaan tehdään värierottelu?)\n", "* **row** (yhdistelmäkaavioiden catplot, displot ja relplot yhteydessä)\n", "* **col** (yhdistelmäkaavioiden catplot, displot ja relplot yhteydessä)\n", "* **kind** (kaaviolaji yhdistelmäkaavioiden catplot, displot ja relplot yhteydessä)\n", "\n", "\n", "## Seaborn-kaavioiden värit ja koot\n", "\n", "Kaavion luonnissa voin määrittää värin **color**-parametrin arvona. Esimerkiksi tämän muistion ensimmäiseen kaavioon saan pylväille vihreän värin seuraavasti: `sns.countplot(data=tips, x='size', color='green')`. Reunavärin voin määrittää **edgecolor**-parametrilla.\n", "\n", "* Värejä: https://matplotlib.org/stable/gallery/color/named_colors.html\n", "\n", "Kaavion luonnissa voit määrittää käytettävän värikartan **palette**-parametrilla.\n", "\n", "* Värikarttoja: https://matplotlib.org/stable/tutorials/colors/colormaps.html\n", "\n", "Yksittäisen kaavion koon voin määrittää luomalla kaaviota ympäröivän kuvion (figure) ennen kaavion luomista. Esimerkiksi `plt.figure(figsize=(10,6))`.\n", "\n", "Yhdistelmäkaavion (catplot, displot, relplot, jointplot) kokoa säädän **height**- ja **aspect**-parametreillä." ] }, { "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", "# Käytetään valmista tyylimäärittelyä (vaihtoehtoja 'darkgrid', 'white', 'dark')\n", "sns.set_style('whitegrid')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | total_bill | \n", "tip | \n", "sex | \n", "smoker | \n", "day | \n", "time | \n", "size | \n", "
---|---|---|---|---|---|---|---|
0 | \n", "16.99 | \n", "1.01 | \n", "Female | \n", "No | \n", "Sun | \n", "Dinner | \n", "2 | \n", "
1 | \n", "10.34 | \n", "1.66 | \n", "Male | \n", "No | \n", "Sun | \n", "Dinner | \n", "3 | \n", "
2 | \n", "21.01 | \n", "3.50 | \n", "Male | \n", "No | \n", "Sun | \n", "Dinner | \n", "3 | \n", "
3 | \n", "23.68 | \n", "3.31 | \n", "Male | \n", "No | \n", "Sun | \n", "Dinner | \n", "2 | \n", "
4 | \n", "24.59 | \n", "3.61 | \n", "Female | \n", "No | \n", "Sun | \n", "Dinner | \n", "4 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
239 | \n", "29.03 | \n", "5.92 | \n", "Male | \n", "No | \n", "Sat | \n", "Dinner | \n", "3 | \n", "
240 | \n", "27.18 | \n", "2.00 | \n", "Female | \n", "Yes | \n", "Sat | \n", "Dinner | \n", "2 | \n", "
241 | \n", "22.67 | \n", "2.00 | \n", "Male | \n", "Yes | \n", "Sat | \n", "Dinner | \n", "2 | \n", "
242 | \n", "17.82 | \n", "1.75 | \n", "Male | \n", "No | \n", "Sat | \n", "Dinner | \n", "2 | \n", "
243 | \n", "18.78 | \n", "3.00 | \n", "Female | \n", "No | \n", "Thur | \n", "Dinner | \n", "2 | \n", "
244 rows × 7 columns
\n", "