Skip to content

Commit 12e37b2

Browse files
authored
Bonusový příklad k vizualizacím (#109)
1 parent f4d9c76 commit 12e37b2

File tree

5 files changed

+39
-3
lines changed

5 files changed

+39
-3
lines changed

python-pro-data-1/vizualizace/excs.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55

66
### Bonusy
77

8+
::exc[excs/podgrafy]
89
::exc[excs/donut]
-20.4 KB
Loading

python-pro-data-1/vizualizace/excs/donut/exercise.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ Nyní si zkus vytvořit :term{cs="prstencový graf" en="donut chart"}. Tento gra
99
import matplotlib.pyplot as plt
1010
```
1111

12-
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.
12+
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).
13+
14+
```py
15+
["Carbohydrate, by difference", "Total lipid (fat)", "Protein", "Potassium, K", "Iron, Fe", "Calcium, Ca"]
16+
```
1317

1418
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.
1519

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

4852
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.
4953

50-
Příklad výsledku najdeš níže.
51-
5254
::fig[Přiklad výsledku]{src=assets/output.png}
31 KB
Loading
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
title: Podgrafy
3+
demand: 3
4+
---
5+
6+
`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ů.
7+
8+
Na začátku je potřeba přidat import `matplotlib`, abychom ho mohli využít ke tvorbě podgrafů.
9+
10+
```py
11+
import matplotlib.pyplot as plt
12+
```
13+
14+
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ů.
15+
16+
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.
17+
18+
```py
19+
fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
20+
```
21+
22+
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`.
23+
24+
```py
25+
sns.barplot(food_merged_brands_protein, y="branded_food_category", x="amount", ax=ax1)
26+
ax1.set_xlabel("Množství proteinů (g)")
27+
```
28+
29+
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`.
30+
31+
::fig[Přiklad výsledku]{src=assets/output.png}
32+
33+
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()`.

0 commit comments

Comments
 (0)