You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
233 lines
15 KiB
233 lines
15 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "22acf28f518a4769ea14fa42f4734b9f",
|
|
"translation_date": "2025-08-26T17:09:49+00:00",
|
|
"source_file": "3-Data-Visualization/R/09-visualization-quantities/README.md",
|
|
"language_code": "sk"
|
|
}
|
|
-->
|
|
# Vizualizácia množstiev
|
|
| ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/09-Visualizing-Quantities.png)|
|
|
|:---:|
|
|
| Vizualizácia množstiev - _Sketchnote od [@nitya](https://twitter.com/nitya)_ |
|
|
|
|
V tejto lekcii preskúmate, ako používať niektoré z mnohých dostupných knižníc balíkov R na vytváranie zaujímavých vizualizácií založených na koncepte množstva. Pomocou vyčisteného datasetu o vtákoch z Minnesoty sa môžete dozvedieť veľa zaujímavých faktov o miestnej faune.
|
|
|
|
## [Kvíz pred prednáškou](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16)
|
|
|
|
## Pozorovanie rozpätia krídel s ggplot2
|
|
Vynikajúcou knižnicou na vytváranie jednoduchých aj sofistikovaných grafov a diagramov rôznych typov je [ggplot2](https://cran.r-project.org/web/packages/ggplot2/index.html). Vo všeobecnosti proces vytvárania grafov pomocou týchto knižníc zahŕňa identifikáciu častí vášho dataframe, ktoré chcete zacieliť, vykonanie potrebných transformácií na tieto údaje, priradenie hodnôt osi x a y, rozhodnutie o type grafu a následné zobrazenie grafu.
|
|
|
|
`ggplot2` je systém na deklaratívne vytváranie grafiky, založený na Gramatike grafov. [Gramatika grafov](https://en.wikipedia.org/wiki/Ggplot2) je všeobecná schéma pre vizualizáciu údajov, ktorá rozdeľuje grafy na semantické komponenty, ako sú škály a vrstvy. Inými slovami, jednoduchosť vytvárania grafov pre jednorozmerné alebo viacrozmerné údaje s minimálnym kódom robí z `ggplot2` najpopulárnejší balík používaný na vizualizácie v R. Používateľ určuje, ako mapovať premenné na estetiku, grafické prvky, a `ggplot2` sa postará o zvyšok.
|
|
|
|
> ✅ Graf = Údaje + Estetika + Geometria
|
|
> - Údaje sa týkajú datasetu
|
|
> - Estetika označuje premenné, ktoré sa majú skúmať (premenné x a y)
|
|
> - Geometria označuje typ grafu (čiarový graf, stĺpcový graf, atď.)
|
|
|
|
Vyberte najlepšiu geometriu (typ grafu) podľa vašich údajov a príbehu, ktorý chcete grafom vyrozprávať.
|
|
|
|
> - Na analýzu trendov: čiarový, stĺpcový
|
|
> - Na porovnanie hodnôt: stĺpcový, koláčový, bodový graf
|
|
> - Na zobrazenie vzťahu častí k celku: koláčový
|
|
> - Na zobrazenie distribúcie údajov: bodový graf, stĺpcový
|
|
> - Na zobrazenie vzťahov medzi hodnotami: čiarový, bodový graf, bublinový
|
|
|
|
✅ Môžete si tiež pozrieť tento popisný [cheatsheet](https://nyu-cdsc.github.io/learningr/assets/data-visualization-2.1.pdf) pre ggplot2.
|
|
|
|
## Vytvorenie čiarového grafu o hodnotách rozpätia krídel vtákov
|
|
|
|
Otvorte konzolu R a importujte dataset.
|
|
> Poznámka: Dataset je uložený v koreňovom adresári tohto repozitára v priečinku `/data`.
|
|
|
|
Importujme dataset a pozrime sa na jeho hlavičku (prvých 5 riadkov).
|
|
|
|
```r
|
|
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
|
|
head(birds)
|
|
```
|
|
Hlavička datasetu obsahuje mix textu a čísel:
|
|
|
|
| | Názov | Vedecký názov | Kategória | Rád | Čeľaď | Rod | Stav ochrany | MinDĺžka | MaxDĺžka | MinHmotnosť | MaxHmotnosť | MinRozpätie | MaxRozpätie |
|
|
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :------------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: |
|
|
| 0 | Čiernobruchá pískajúca kačica | Dendrocygna autumnalis | Kačice/Husi/Vodné vtáky | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
|
|
| 1 | Hnedá pískajúca kačica | Dendrocygna bicolor | Kačice/Husi/Vodné vtáky | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
|
|
| 2 | Snežná hus | Anser caerulescens | Kačice/Husi/Vodné vtáky | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
|
|
| 3 | Rossova hus | Anser rossii | Kačice/Husi/Vodné vtáky | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
|
|
| 4 | Veľká bieločelá hus | Anser albifrons | Kačice/Husi/Vodné vtáky | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
|
|
|
|
Začnime vykresľovaním niektorých číselných údajov pomocou základného čiarového grafu. Predpokladajme, že chcete zobraziť maximálne rozpätie krídel týchto zaujímavých vtákov.
|
|
|
|
```r
|
|
install.packages("ggplot2")
|
|
library("ggplot2")
|
|
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
|
|
geom_line()
|
|
```
|
|
Tu nainštalujete balík `ggplot2` a potom ho importujete do pracovného priestoru pomocou príkazu `library("ggplot2")`. Na vykreslenie akéhokoľvek grafu v ggplot sa používa funkcia `ggplot()` a špecifikujete dataset, premenné x a y ako atribúty. V tomto prípade používame funkciu `geom_line()`, pretože chceme vykresliť čiarový graf.
|
|
|
|

|
|
|
|
Čo si všimnete okamžite? Zdá sa, že existuje aspoň jeden extrémny údaj - to je poriadne rozpätie krídel! Rozpätie krídel viac ako 2000 centimetrov znamená viac ako 20 metrov - potulujú sa v Minnesote pterodaktyly? Poďme to preskúmať.
|
|
|
|
Aj keď by ste mohli rýchlo zoradiť údaje v Exceli, aby ste našli tieto extrémne hodnoty, ktoré sú pravdepodobne preklepy, pokračujte vo vizualizačnom procese priamo z grafu.
|
|
|
|
Pridajte štítky na os x, aby ste ukázali, o aké vtáky ide:
|
|
|
|
```r
|
|
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
|
|
geom_line() +
|
|
theme(axis.text.x = element_text(angle = 45, hjust=1))+
|
|
xlab("Birds") +
|
|
ylab("Wingspan (CM)") +
|
|
ggtitle("Max Wingspan in Centimeters")
|
|
```
|
|
Špecifikujeme uhol v `theme` a špecifikujeme štítky osí x a y v `xlab()` a `ylab()` respektíve. Funkcia `ggtitle()` dáva grafu názov.
|
|
|
|

|
|
|
|
Aj s rotáciou štítkov nastavenou na 45 stupňov je ich príliš veľa na čítanie. Skúsme inú stratégiu: označme iba tie extrémne hodnoty a nastavme štítky priamo v grafe. Môžete použiť bodový graf, aby ste získali viac priestoru na označovanie:
|
|
|
|
```r
|
|
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
|
|
geom_point() +
|
|
geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
|
|
theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank())
|
|
ylab("Wingspan (CM)") +
|
|
ggtitle("Max Wingspan in Centimeters") +
|
|
```
|
|
Čo sa tu deje? Použili ste funkciu `geom_point()` na vykreslenie bodov. S týmto ste pridali štítky pre vtáky, ktoré mali `MaxRozpätie > 500`, a tiež skryli štítky na osi x, aby ste graf vyčistili.
|
|
|
|
Čo objavíte?
|
|
|
|

|
|
|
|
## Filtrovanie údajov
|
|
|
|
Orol skalný a sokol prériový, aj keď sú pravdepodobne veľmi veľké vtáky, sa zdajú byť nesprávne označené, s pridanou nulou k ich maximálnemu rozpätí krídel. Je nepravdepodobné, že by ste stretli orla skalného s rozpätím krídel 25 metrov, ale ak áno, dajte nám vedieť! Vytvorme nový dataframe bez týchto dvoch extrémnych hodnôt:
|
|
|
|
```r
|
|
birds_filtered <- subset(birds, MaxWingspan < 500)
|
|
|
|
ggplot(data=birds_filtered, aes(x=Name, y=MaxWingspan,group=1)) +
|
|
geom_point() +
|
|
ylab("Wingspan (CM)") +
|
|
xlab("Birds") +
|
|
ggtitle("Max Wingspan in Centimeters") +
|
|
geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
|
|
theme(axis.text.x=element_blank(), axis.ticks.x=element_blank())
|
|
```
|
|
Vytvorili sme nový dataframe `birds_filtered` a potom vykreslili bodový graf. Filtrovaním extrémnych hodnôt sú vaše údaje teraz súdržnejšie a zrozumiteľnejšie.
|
|
|
|

|
|
|
|
Teraz, keď máme čistejší dataset aspoň z hľadiska rozpätia krídel, poďme objaviť viac o týchto vtákoch.
|
|
|
|
Aj keď čiarové a bodové grafy môžu zobrazovať informácie o hodnotách údajov a ich distribúciách, chceme premýšľať o hodnotách inherentných v tomto datasete. Mohli by ste vytvoriť vizualizácie na zodpovedanie nasledujúcich otázok o množstve:
|
|
|
|
> Koľko kategórií vtákov existuje a aké sú ich počty?
|
|
> Koľko vtákov je vyhynutých, ohrozených, vzácnych alebo bežných?
|
|
> Koľko je rôznych rodov a rádov podľa Linnaeusovej terminológie?
|
|
|
|
## Preskúmajte stĺpcové grafy
|
|
|
|
Stĺpcové grafy sú praktické, keď potrebujete zobraziť skupiny údajov. Preskúmajme kategórie vtákov, ktoré existujú v tomto datasete, aby sme zistili, ktorá je najbežnejšia podľa počtu.
|
|
Vytvorme stĺpcový graf na filtrovaných údajoch.
|
|
|
|
```r
|
|
install.packages("dplyr")
|
|
install.packages("tidyverse")
|
|
|
|
library(lubridate)
|
|
library(scales)
|
|
library(dplyr)
|
|
library(ggplot2)
|
|
library(tidyverse)
|
|
|
|
birds_filtered %>% group_by(Category) %>%
|
|
summarise(n=n(),
|
|
MinLength = mean(MinLength),
|
|
MaxLength = mean(MaxLength),
|
|
MinBodyMass = mean(MinBodyMass),
|
|
MaxBodyMass = mean(MaxBodyMass),
|
|
MinWingspan=mean(MinWingspan),
|
|
MaxWingspan=mean(MaxWingspan)) %>%
|
|
gather("key", "value", - c(Category, n)) %>%
|
|
ggplot(aes(x = Category, y = value, group = key, fill = key)) +
|
|
geom_bar(stat = "identity") +
|
|
scale_fill_manual(values = c("#D62728", "#FF7F0E", "#8C564B","#2CA02C", "#1F77B4", "#9467BD")) +
|
|
xlab("Category")+ggtitle("Birds of Minnesota")
|
|
|
|
```
|
|
V nasledujúcom úryvku inštalujeme balíky [dplyr](https://www.rdocumentation.org/packages/dplyr/versions/0.7.8) a [lubridate](https://www.rdocumentation.org/packages/lubridate/versions/1.8.0), ktoré pomáhajú manipulovať a zoskupovať údaje na vykreslenie zoskupeného stĺpcového grafu. Najprv zoskupíte údaje podľa `Category` vtákov a potom sumarizujete stĺpce `MinLength`, `MaxLength`, `MinBodyMass`, `MaxBodyMass`, `MinWingspan`, `MaxWingspan`. Potom vykreslíte stĺpcový graf pomocou balíka `ggplot2` a špecifikujete farby pre rôzne kategórie a štítky.
|
|
|
|

|
|
|
|
Tento stĺpcový graf je však nečitateľný, pretože obsahuje príliš veľa nezoskupených údajov. Musíte vybrať iba údaje, ktoré chcete vykresliť, takže sa pozrime na dĺžku vtákov podľa ich kategórie.
|
|
|
|
Filtrovanie údajov na zahrnutie iba kategórie vtákov.
|
|
|
|
Keďže existuje veľa kategórií, môžete tento graf zobraziť vertikálne a upraviť jeho výšku, aby sa zobrazili všetky údaje:
|
|
|
|
```r
|
|
birds_count<-dplyr::count(birds_filtered, Category, sort = TRUE)
|
|
birds_count$Category <- factor(birds_count$Category, levels = birds_count$Category)
|
|
ggplot(birds_count,aes(Category,n))+geom_bar(stat="identity")+coord_flip()
|
|
```
|
|
Najprv spočítate unikátne hodnoty v stĺpci `Category` a potom ich zoradíte do nového dataframe `birds_count`. Tieto zoradené údaje sú potom faktorizované na rovnakej úrovni, aby boli vykreslené v zoradenom poradí. Pomocou `ggplot2` potom vykreslíte údaje v stĺpcovom grafe. Funkcia `coord_flip()` vykreslí horizontálne stĺpce.
|
|
|
|

|
|
|
|
Tento stĺpcový graf poskytuje dobrý prehľad o počte vtákov v každej kategórii. Na prvý pohľad vidíte, že najväčší počet vtákov v tomto regióne patrí do kategórie Kačice/Husi/Vodné vtáky. Minnesota je "krajina 10 000 jazier", takže to nie je prekvapujúce!
|
|
|
|
✅ Skúste niektoré ďalšie počty v tomto datasete. Prekvapí vás niečo?
|
|
|
|
## Porovnávanie údajov
|
|
|
|
Môžete skúsiť rôzne porovnania zoskupených údajov vytvorením nových osí. Skúste porovnanie MaxDĺžky vtákov podľa ich kategórie:
|
|
|
|
```r
|
|
birds_grouped <- birds_filtered %>%
|
|
group_by(Category) %>%
|
|
summarise(
|
|
MaxLength = max(MaxLength, na.rm = T),
|
|
MinLength = max(MinLength, na.rm = T)
|
|
) %>%
|
|
arrange(Category)
|
|
|
|
ggplot(birds_grouped,aes(Category,MaxLength))+geom_bar(stat="identity")+coord_flip()
|
|
```
|
|
Zoskupíme údaje `birds_filtered` podľa `Category` a potom vykreslíme stĺpcový graf.
|
|
|
|

|
|
|
|
Tu nie je nič prekvapujúce: kolibríky majú najmenšiu MaxDĺžku v porovnaní s pelikánmi alebo husami. Je dobré, keď údaje dávajú logický zmysel!
|
|
|
|
Môžete vytvoriť zaujímavejšie vizualizácie stĺpcových grafov prekrytím údajov. Prekryme Minimálnu a Maximálnu Dĺžku na danej kategórii vtákov:
|
|
|
|
```r
|
|
ggplot(data=birds_grouped, aes(x=Category)) +
|
|
geom_bar(aes(y=MaxLength), stat="identity", position ="identity", fill='blue') +
|
|
geom_bar(aes(y=MinLength), stat="identity", position="identity", fill='orange')+
|
|
coord_flip()
|
|
```
|
|

|
|
|
|
## 🚀 Výzva
|
|
|
|
Tento dataset o vtákoch ponúka množstvo informácií o rôznych typoch vtákov v konkrétnom ekosystéme. Vyhľadajte na internete a zistite, či nájdete iné datasety orientované na vtáky. Precvičte si vytváranie grafov a diagramov o týchto vtákoch, aby ste objavili fakty, ktoré ste si neuvedomovali.
|
|
|
|
## [Kvíz po prednáške](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17)
|
|
|
|
## Prehľad a samostatné štúdium
|
|
|
|
Táto prvá lekcia vám poskytla informácie o tom, ako používať `ggplot2` na vizualizáciu množstiev. Urobte si výskum o iných spôsoboch práce s datasetmi na vizualizáciu. Vyhľadajte a preskúmajte datasety, ktoré by ste mohli vizualizovať pomocou iných balíkov, ako sú [Lattice](https://stat.ethz.ch/R-manual/R-devel/library/lattice/html/Lattice.html) a [Plotly](https://github.com/plotly/plotly.R#readme).
|
|
|
|
## Zadanie
|
|
[Čiary, body a stĺpce](assignment.md)
|
|
|
|
---
|
|
|
|
**Upozornenie**:
|
|
Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. |