Zdroj: https://physics.ujep.cz/~jskvor/ZZD/ZZD-cv4.html
ggplot napoveda http://r-statistics.co/Top50-Ggplot2-Visualizations-MasterList-R-Code.html
rm(list=ls())
library(dplyr)
library(DescTools)
library(ggplot2)
nacteni dat z csv
df <- read.csv(file = "https://physics.ujep.cz/~jskvor/ZZD/StudentsPerformance.csv")
Pomocí bodového grafu vestavěné kreslící knihovny (base graphics)
vykreslete proti sobě hodnoty ze sloupců writing_score a
reading_score.
plot(df$writing.score,df$reading.score, xlab = "Writing score", ylab = "reading score", main = "R / W score")

Stejné zobrazení vytvořte pomocí knihovny ggplot2
ggplot(df, aes(writing.score,reading.score)) +
geom_point() +
labs(y="reading score", x="writeing score", title="Writeing vs. reading score") +
geom_smooth()

Vytvořte nový sloupec avg_score, který bude pro každý záznam tabulky
obsahovat průměrné skóre dané osoby ze sloupců math.score, reading.score
a writing.score.
df$avg_score <- (df$math.score + df$reading.score + df$writing.score)/3
head(df)
Vytvořte histogram hodnot ze sloupce avg_score pomocí vestavěných
funkcí (base graphics).
hist(df$avg_score, main="Rozložení bodů",xlab="počet bodů",ylab = "četnost", col="blue", density=25, angle = 60, border ="black")

Stejný histogram vytvořte pomocí knihovny ggplot2 obrysy sloupců lze
nastavit parametrem color=“barva” výplň sloupců lze nastavit parametrem
fill=“barva” vyzkoušejte si vliv kreslících vrstev
theme_nazev_tématu
ggplot(df, aes(avg_score)) +
geom_histogram(col = "blue", fill = "yellow") +
theme_minimal() +
labs(x="AVG", y="četnost", title = "R/W průměr")

Pro každou kategorii ze sloupce race.ethnicity vytvořte boxplot
(krabicový graf) ze sloupce math_score. boxplot CISLO~KATEGORIE
boxplot(df$math.score~df$race.ethnicity, col="orange",border="red", main="Math per Eth", xlab = "Eth group", ylab = "Body")

ggplot(df, aes(race.ethnicity,math.score)) +
geom_boxplot() +
theme_minimal()

Pomocí knihovny ggplot2 vytvořte stejný graf zvlášť pro každou
kategorii sloupce gender. Výsledné grafy vykreslete jako koláž do
jednoho obrázku.
df %>% ggplot(aes(x=race.ethnicity,y=math.score)) + geom_boxplot() + facet_wrap(~gender)

Vypočtete z tabulky, kolik záznamů připadá na jednotlivé kategorie
sloupce race.ethnicity. Výsledek vykreslete jako sloupcový graf.
df3 <- df %>% group_by(race.ethnicity,math.score) %>% summarise(pocet = n())
`summarise()` has grouped output by 'race.ethnicity'. You can override using the `.groups` argument.
ggplot(df3, aes(race.ethnicity )) + geom_bar(fill="lightblue", col = "black")

Stejnou analýzu proveďte dále dle podkategorie gender
df3 <- df %>% group_by(gender,race.ethnicity,math.score) %>% summarise(pocet = n())
`summarise()` has grouped output by 'gender', 'race.ethnicity'. You can override using the `.groups` argument.
ggplot(df3, aes(race.ethnicity )) + geom_bar(fill="lightgreen", col = "red") + facet_wrap(~gender)

Poslední obrázek překreslete jako koláčový graf.
ggplot(df3, aes(x="",y=pocet, fill=race.ethnicity )) + geom_col() + coord_polar("y") + facet_wrap(~gender)

LS0tDQp0aXRsZTogIkNWIDQiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpaZHJvajogaHR0cHM6Ly9waHlzaWNzLnVqZXAuY3ovfmpza3Zvci9aWkQvWlpELWN2NC5odG1sDQoNCiBnZ3Bsb3QgbmFwb3ZlZGENCiBodHRwOi8vci1zdGF0aXN0aWNzLmNvL1RvcDUwLUdncGxvdDItVmlzdWFsaXphdGlvbnMtTWFzdGVyTGlzdC1SLUNvZGUuaHRtbA0KYGBge3J9DQpybShsaXN0PWxzKCkpDQoNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KERlc2NUb29scykNCmxpYnJhcnkoZ2dwbG90MikNCmBgYA0KIG5hY3RlbmkgZGF0IHogY3N2DQpgYGB7cn0NCmRmIDwtIHJlYWQuY3N2KGZpbGUgPSAiaHR0cHM6Ly9waHlzaWNzLnVqZXAuY3ovfmpza3Zvci9aWkQvU3R1ZGVudHNQZXJmb3JtYW5jZS5jc3YiKQ0KYGBgDQogUG9tb2PDrSBib2RvdsOpaG8gZ3JhZnUgdmVzdGF2xJtuw6kga3Jlc2zDrWPDrSBrbmlob3ZueSAoYmFzZSBncmFwaGljcykgdnlrcmVzbGV0ZQ0KIHByb3RpIHNvYsSbIGhvZG5vdHkgemUgc2xvdXBjxa8gd3JpdGluZ19zY29yZSBhIHJlYWRpbmdfc2NvcmUuDQpgYGB7cn0NCnBsb3QoZGYkd3JpdGluZy5zY29yZSxkZiRyZWFkaW5nLnNjb3JlLCB4bGFiID0gIldyaXRpbmcgc2NvcmUiLCB5bGFiID0gInJlYWRpbmcgc2NvcmUiLCBtYWluID0gIlIgLyBXIHNjb3JlIikNCmBgYA0KDQogU3Rlam7DqSB6b2JyYXplbsOtIHZ5dHZvxZl0ZSBwb21vY8OtIGtuaWhvdm55IGdncGxvdDINCmBgYHtyfQ0KZ2dwbG90KGRmLCBhZXMod3JpdGluZy5zY29yZSxyZWFkaW5nLnNjb3JlKSkgKw0KICBnZW9tX3BvaW50KCkgKyANCiAgbGFicyh5PSJyZWFkaW5nIHNjb3JlIiwgeD0id3JpdGVpbmcgc2NvcmUiLCB0aXRsZT0iV3JpdGVpbmcgdnMuIHJlYWRpbmcgc2NvcmUiKSArDQogIGdlb21fc21vb3RoKCkNCmBgYA0KIFZ5dHZvxZl0ZSBub3bDvSBzbG91cGVjIGF2Z19zY29yZSwga3RlcsO9IGJ1ZGUgcHJvIGthxb5kw70gesOhem5hbSB0YWJ1bGt5IG9ic2Fob3ZhdA0KIHByxa9txJtybsOpIHNrw7NyZSBkYW7DqSBvc29ieSB6ZSBzbG91cGPFryBtYXRoLnNjb3JlLCByZWFkaW5nLnNjb3JlIGEgd3JpdGluZy5zY29yZS4NCmBgYHtyfQ0KZGYkYXZnX3Njb3JlIDwtIChkZiRtYXRoLnNjb3JlICsgZGYkcmVhZGluZy5zY29yZSArIGRmJHdyaXRpbmcuc2NvcmUpLzMNCmhlYWQoZGYpDQpgYGANCiBWeXR2b8WZdGUgaGlzdG9ncmFtIGhvZG5vdCB6ZSBzbG91cGNlIGF2Z19zY29yZSBwb21vY8OtDQogdmVzdGF2xJtuw71jaCBmdW5rY8OtIChiYXNlIGdyYXBoaWNzKS4NCmBgYHtyfQ0KaGlzdChkZiRhdmdfc2NvcmUsIG1haW49IlJvemxvxb5lbsOtIGJvZMWvIix4bGFiPSJwb8SNZXQgYm9kxa8iLHlsYWIgPSAixI1ldG5vc3QiLCBjb2w9ImJsdWUiLCBkZW5zaXR5PTI1LCBhbmdsZSA9ICA2MCwgYm9yZGVyID0iYmxhY2siKQ0KYGBgDQogU3Rlam7DvSBoaXN0b2dyYW0gdnl0dm/FmXRlIHBvbW9jw60ga25paG92bnkgZ2dwbG90Mg0KICBvYnJ5c3kgc2xvdXBjxa8gbHplIG5hc3Rhdml0IHBhcmFtZXRyZW0gY29sb3I9ImJhcnZhIg0KICB2w71wbMWIIHNsb3VwY8WvIGx6ZSBuYXN0YXZpdCBwYXJhbWV0cmVtIGZpbGw9ImJhcnZhIg0KICB2eXprb3XFoWVqdGUgc2kgdmxpdiBrcmVzbMOtY8OtY2ggdnJzdGV2IHRoZW1lX25hemV2X3TDqW1hdHUNCmBgYHtyfQ0KZ2dwbG90KGRmLCBhZXMoYXZnX3Njb3JlKSkgKw0KICBnZW9tX2hpc3RvZ3JhbShjb2wgPSAiYmx1ZSIsIGZpbGwgPSAieWVsbG93IikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICBsYWJzKHg9IkFWRyIsIHk9IsSNZXRub3N0IiwgdGl0bGUgPSAiUi9XIHByxa9txJtyIikNCmBgYA0KIFBybyBrYcW+ZG91IGthdGVnb3JpaSB6ZSBzbG91cGNlIHJhY2UuZXRobmljaXR5IHZ5dHZvxZl0ZSBib3hwbG90IChrcmFiaWNvdsO9IGdyYWYpDQogemUgc2xvdXBjZSBtYXRoX3Njb3JlLg0KIGJveHBsb3QgQ0lTTE9+S0FURUdPUklFDQpgYGB7cn0NCmJveHBsb3QoZGYkbWF0aC5zY29yZX5kZiRyYWNlLmV0aG5pY2l0eSwgY29sPSJvcmFuZ2UiLGJvcmRlcj0icmVkIiwgbWFpbj0iTWF0aCBwZXIgRXRoIiwgeGxhYiA9ICJFdGggZ3JvdXAiLCB5bGFiID0gIkJvZHkiKQ0KYGBgDQpgYGB7cn0NCmdncGxvdChkZiwgYWVzKHJhY2UuZXRobmljaXR5LG1hdGguc2NvcmUpKSArDQogIGdlb21fYm94cGxvdCgpICsNCiAgdGhlbWVfbWluaW1hbCgpDQpgYGANCiBQb21vY8OtIGtuaWhvdm55IGdncGxvdDIgdnl0dm/FmXRlIHN0ZWpuw70gZ3JhZiB6dmzDocWhxaUgcHJvIGthxb5kb3Uga2F0ZWdvcmlpIA0KIHNsb3VwY2UgZ2VuZGVyLiBWw71zbGVkbsOpIGdyYWZ5IHZ5a3Jlc2xldGUgamFrbyBrb2zDocW+IGRvIGplZG5vaG8gb2Jyw6F6a3UuDQpgYGB7cn0NCmRmICU+JSBnZ3Bsb3QoYWVzKHg9cmFjZS5ldGhuaWNpdHkseT1tYXRoLnNjb3JlKSkgKyBnZW9tX2JveHBsb3QoKSArIGZhY2V0X3dyYXAofmdlbmRlcikNCmBgYA0KIFZ5cG/EjXRldGUgeiB0YWJ1bGt5LCBrb2xpayB6w6F6bmFtxa8gcMWZaXBhZMOhIG5hIGplZG5vdGxpdsOpIGthdGVnb3JpZSBzbG91cGNlDQogcmFjZS5ldGhuaWNpdHkuIFbDvXNsZWRlayB2eWtyZXNsZXRlIGpha28gc2xvdXBjb3bDvSBncmFmLg0KYGBge3J9DQpkZjMgPC0gZGYgJT4lIGdyb3VwX2J5KHJhY2UuZXRobmljaXR5LG1hdGguc2NvcmUpICU+JSBzdW1tYXJpc2UocG9jZXQgPSBuKCkpDQpnZ3Bsb3QoZGYzLCBhZXMocmFjZS5ldGhuaWNpdHkgKSkgKyBnZW9tX2JhcihmaWxsPSJsaWdodGJsdWUiLCBjb2wgPSAiYmxhY2siKQ0KYGBgDQogU3Rlam5vdSBhbmFsw716dSBwcm92ZcSPdGUgZMOhbGUgZGxlIHBvZGthdGVnb3JpZSBnZW5kZXINCmBgYHtyfQ0KZGYzIDwtIGRmICU+JSBncm91cF9ieShnZW5kZXIscmFjZS5ldGhuaWNpdHksbWF0aC5zY29yZSkgJT4lIHN1bW1hcmlzZShwb2NldCA9IG4oKSkNCmdncGxvdChkZjMsIGFlcyhyYWNlLmV0aG5pY2l0eSApKSArIGdlb21fYmFyKGZpbGw9ImxpZ2h0Z3JlZW4iLCBjb2wgPSAicmVkIikgKyBmYWNldF93cmFwKH5nZW5kZXIpDQpgYGANCiBQb3NsZWRuw60gb2Jyw6F6ZWsgcMWZZWtyZXNsZXRlIGpha28ga29sw6HEjW92w70gZ3JhZi4NCmBgYHtyfQ0KZ2dwbG90KGRmMywgYWVzKHg9IiIseT1wb2NldCwgZmlsbD1yYWNlLmV0aG5pY2l0eSApKSArIGdlb21fY29sKCkgKyBjb29yZF9wb2xhcigieSIpICsgZmFjZXRfd3JhcCh+Z2VuZGVyKQ0KYGBg