Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions python-pro-data-1/vizualizace/excs.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@

### Bonusy

::exc[excs/podgrafy]
::exc[excs/donut]
Binary file modified python-pro-data-1/vizualizace/excs/donut/assets/output.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 5 additions & 3 deletions python-pro-data-1/vizualizace/excs/donut/exercise.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,11 @@ Nyní si zkus vytvořit :term{cs="prstencový graf" en="donut chart"}. Tento gra
import matplotlib.pyplot as plt
```

Vyzkoušíme si pomocí prstencového grafu zobrazit poměr výživných látek, a to konkrétně pro čokoládu s `fdc_id` 885174. Vytvoř tedy tabulku `data_pie_plot` (použij prosím tento název, aby ti fungovalo doplnění do kódu níže), do které ulož z tabulky `food_merged_brands` řádky z `fdc_id` rovné 885174. Dále ponech v tabulce pouze řádky, které ve sloupci `nutrient_name` nemají hodnotu `Energy`, protože nás zajímají výživné látky jako proteiny atd.
Vyzkoušíme si pomocí prstencového grafu zobrazit poměr výživných látek, a to konkrétně pro čokoládu s `fdc_id` 885174. Vytvoř tedy tabulku `data_pie_plot` (použij prosím tento název, aby ti fungovalo doplnění do kódu níže), do které ulož z tabulky `food_merged_brands` řádky z `fdc_id` rovné 885174 (tmavá čokoláda s pistáciemi). Dále ponech v tabulce pouze řádky, které ve sloupci `nutrient_name` mají hodnotu z následujícího seznamu. Jinak totiž hrozí, že bychom některé výživné látky měli započítané dvakrát (např. protože vláknina a cukr patří mezi karbohydráty).

```py
["Carbohydrate, by difference", "Total lipid (fat)", "Protein", "Potassium, K", "Iron, Fe", "Calcium, Ca"]
```

Aby graf nebyl zkreslený, je potřeba převést všechna data na stejné jednotky, např. na grafy. To uděláme ve třech krocích.

Expand Down Expand Up @@ -47,6 +51,4 @@ ax.legend(__________, loc="center left", bbox_to_anchor=(1, 0.5))

Nakonec nastav nadpis grafu. Pomocí metody `ax.set_title` nastav nadpis, do volání metody vlož nadpis, který by se ti pro graf líbil.

Příklad výsledku najdeš níže.

::fig[Přiklad výsledku]{src=assets/output.png}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
33 changes: 33 additions & 0 deletions python-pro-data-1/vizualizace/excs/podgrafy/exercise.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
title: Podgrafy
demand: 3
---

`matplotlib`, na kterém je `seaborn` postavený, umí vytvářet :term{cs="podgrafy" en="subplot"}, což znamená vložení více grafů do jednoho obrázku. Můžeme například ke grafu s průměrným množstvím proteinů v kategoriích potravin přidat graf s průměrným množstvím karbohydrátů.

Na začátku je potřeba přidat import `matplotlib`, abychom ho mohli využít ke tvorbě podgrafů.

```py
import matplotlib.pyplot as plt
```

Použijeme funkci `subplots`. První parametr znamená, kolik podgrafů chceme vytvořit na výšku, a druhý parametr, kolik na šířku. Pokud bychom chtěli dva grafy vedle sebe, použijeme hodnoty 1 a 2. Nakonec přidáme parametr `sharey`, aby oba grafy sdílely svislou osu grafu a neopakovaly se nám zbytečně názvy kategorií u obou grafů.

Funkce vrací několik hodnot. `fig` reprezentuje celý obrázek, `ax1` a `ax2` reprezentuje tzv. :term{cs="osy" en="axis"} grafu. Každá z podgrafů má svoji osu, tj. pokud máme dva podgrafy, budeme mít dvě osy.

```py
fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
```

Data z tabulky `food_merged_brands_protein` vložíme do jednoho z podgrafů. Zápis je stejný jako během lekce, pouze do prvního řádku přidáme parametr `ax` a k němu hodnotu `ax1`, čímž zařídíme, že se tento graf vloží do prvního podgrafu. Popisek vodorovné osy nastavíme s využitím metody `set_xlabel` pro osu `ax1`.

```py
sns.barplot(food_merged_brands_protein, y="branded_food_category", x="amount", ax=ax1)
ax1.set_xlabel("Množství proteinů (g)")
```

Vytvoř tabulku `food_merged_brands_carb`, která z tabulky `food_merged_brands` vybere řádky, kde je ve sloupci `nutrient_name` hodnota `Carbohydrate, by difference`. Přidej graf, který zobrazuje průměrné množství karbohydrátů v jednotlivých kategoriích, jako druhý podgraf. Kód bude stejný jako v případě prvního podgrafu, pouze vyměň tabulku a použij osu `ax2`.

::fig[Přiklad výsledku]{src=assets/output.png}

Pokud ti připadá, že graf data zkresluje tím, že každý podgraf má svůj rozsah vodorovné osy, vyzkoušej parametr `sharex` u funkce `subplots()`.