Sloupcový graf a histogram v R (s příkladem)
Sloupcový graf je skvělý způsob, jak zobrazit kategorické proměnné na ose x. Tento typ grafu označuje dva aspekty na ose y.
- První počítá počet výskytů mezi skupinami.
- Druhý ukazuje souhrnnou statistiku (min, max, průměr atd.) proměnné na ose y.
Budete používat datovou sadu mtcars s následujícími proměnnými:
- cyl: Číslo válce v autě. Číselná proměnná
- am: Typ přenosu. 0 pro automatické a 1 pro manuální. Číselná proměnná
- mpg: Míle na galon. Číselná proměnná
Jak vytvořit sloupcový graf
Chcete-li vytvořit graf v R, můžete použít knihovnu ggplot, která vytváří grafy připravené k publikaci. Základní syntaxe této knihovny je:
ggplot(data, mapping = aes()) + geometric object arguments: data: dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common objects are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
V tomto tutoriálu vás zajímá geometrický objekt geom_bar(), který vytváří sloupcový graf.
Sloupcový graf: počet
Váš první graf ukazuje frekvenci válce s geom_bar(). Níže uvedený kód je nejzákladnější syntaxí.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Vysvětlení kódu
- Dataset mtcars předáte do ggplot.
- Uvnitř argumentu aes() přidáte osu x jako proměnnou faktoru (cyl)
- Znak + znamená, že chcete, aby R pokračoval ve čtení kódu. Dělá kód čitelnějším tím, že jej prolomí.
- Pro geometrický objekt použijte geom_bar().
Výstup:
Pozor: ujistěte se, že jste proměnné převedli na faktor, jinak R bude s proměnnými zacházet jako s číselnými. Viz příklad níže.
Přizpůsobte si graf
Pro přizpůsobení grafu lze předat čtyři argumenty:
- `stat`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, pass `stat = "identity"` - `alpha`: Control density of the color - `fill`: Change the color of the bar - `size`: Control the size the bar
Změňte barvu pruhů
Můžete změnit barvu pruhů. Všimněte si, že barvy pruhů jsou všechny podobné.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Vysvětlení kódu
- Barvy pruhů jsou řízeny mapováním aes() uvnitř geometrického objektu (tj. ne v ggplot()). Barvu můžete změnit pomocí argumentů výplně. Zde si vyberete korálovou barvu.
Výstup:
Můžete použít tento kód:
grDevices::colors()
zobrazit všechny dostupné barvy v R. Existuje asi 650 barev.
Změňte intenzitu
Můžete zvýšit nebo snížit intenzitu barvy pruhů
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Vysvětlení kódu
- Chcete-li zvýšit/snížit intenzitu pruhu, můžete změnit hodnotu alfa. Velké alfa zvyšuje intenzitu a nízké alfa snižuje intenzitu. alfa se pohybuje od 0 do 1. Pokud je 1, pak je barva stejná jako barva palety. Pokud je 0, barva je bílá. Zvolíte alfa = 0.1.
Výstup:
Barva podle skupin
Můžete změnit barvy pruhů, což znamená jednu jinou barvu pro každou skupinu. Například proměnná cyl má tři úrovně, pak můžete sloupcový graf vykreslit třemi barvami.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Vysvětlení kódu
- Výplň argumentů uvnitř aes() umožňuje změnu barvy pruhu. Barvu změníte nastavením proměnné výplň = osa x. Ve vašem příkladu je proměnná na ose x cyl; fill = faktor (cyl)
Výstup:
Přidejte skupinu do pruhů
Osu y můžete dále rozdělit na základě jiné úrovně faktoru. Můžete například spočítat počet automatických a manuálních převodovek podle typu válce.
Budete postupovat následovně:
- Krok 1: Vytvořte datový rámec pomocí datové sady mtcars
- Krok 2: Označte proměnnou am jako auto pro automatickou převodovku a man pro manuální převodovku. Převeďte am a cyl jako faktor, abyste ve funkci ggplot() nemuseli používat factor().
- Krok 3: Vyneste do sloupcového grafu počet přenosů podle válce
library(dplyr) # Step 1 data <- mtcars % > % #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
Dataset máte připravený, můžete vykreslit graf;
# Krok 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Vysvětlení kódu
- ggpplot() obsahuje data datové sady a aes().
- V aes() zahrnete proměnnou x-osa a kterou proměnnou je potřeba vyplnit pruh (tj. am)
- geom_bar(): Vytvořte sloupcový graf
Výstup:
Mapování vyplní pruh dvěma barvami, jednou pro každou úroveň. Je snadné změnit skupinu výběrem jiných proměnných faktorů v datové sadě.
Sloupcový graf v procentech
Sloupec můžete zobrazit v procentech namísto hrubého počtu.
# Sloupcový graf v procentech
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Vysvětlení kódu
- Použijte position = „fill“ v argumentu geom_bar() k vytvoření grafiky s procenty na ose y.
Výstup:
Tyče vedle sebe
Je snadné vykreslit sloupcový graf s proměnnou skupiny vedle sebe.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Vysvětlení kódu
- position=position_dodge(): Explicitně říká, jak uspořádat pruhy
Výstup:
Histogram
Ve druhé části výukového programu sloupcový graf můžete reprezentovat skupinu proměnných s hodnotami na ose y.
Vaším cílem je vytvořit graf s průměrnou mílí na galon pro každý typ válce. Chcete-li nakreslit informativní graf, postupujte takto:
- Krok 1: Vytvořte novou proměnnou s průměrnou mílí na galon na válec
- Krok 2: Vytvořte základní histogram
- Krok 3: Změňte orientaci
- Krok 4: Změňte barvu
- Krok 5: Změňte velikost
- Krok 6: Přidejte do grafu štítky
Krok 1) Vytvořte novou proměnnou
Vytvoříte datový rámec s názvem data_histogram, který jednoduše vrátí průměrné míle na galon podle počtu válců v autě. Tuto novou proměnnou nazvete mean_mpg a střední hodnotu zaokrouhlíte na dvě desetinná místa.
# Krok 1
data_histogram <- mtcars % > % mutate(cyl = factor(cyl)) % > % group_by(cyl) % > % summarize(mean_mpg = round(mean(mpg), 2))
Krok 2) Vytvořte základní histogram
Histogram můžete vykreslit. Není připravena komunikovat, aby byla doručena klientovi, ale dává nám intuici o trendu.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Vysvětlení kódu
- Aes() má nyní dvě proměnné. Proměnná cyl odkazuje na osu x a mean_mpg je osa y.
- Chcete-li proměnnou na ose y odkazovat jako číselnou hodnotu, musíte předat argument stat=”identity”. geom_bar používá stat=”bin” jako výchozí hodnotu.
Výstup:
Krok 3) Změňte orientaci
Změníte orientaci grafu z vertikální na horizontální.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Vysvětlení kódu
- Orientaci grafu můžete ovládat pomocí coord_flip().
Výstup:
Krok 4) Změňte barvu
Barvy pruhů můžete rozlišit podle úrovně faktoru proměnné osy x.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Vysvětlení kódu
- Graf můžete vykreslit po skupinách s mapováním fill= cyl. R se automaticky stará o barvy na základě úrovní proměnné cyl
Výstup:
Krok 5) Změňte velikost
Aby graf vypadal hezčí, zmenšíte šířku pruhu.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Vysvětlení kódu
- Argument width uvnitř geom_bar() řídí velikost pruhu. Větší hodnota zvětšuje šířku.
- Všimněte si, že graf uložíte do proměnného grafu. Učiníte tak, protože další krok nezmění kód proměnného grafu. Zlepšuje čitelnost kódu.
Výstup:
Krok 6) Přidejte štítky do grafu
Posledním krokem je přidání hodnoty proměnné mean_mpg do štítku.
graph + geom_text(aes(label = mean_mpg), hjust = 1.5, color = "white", size = 3) + theme_classic()
Vysvětlení kódu
- Funkce geom_text() je užitečná pro ovládání estetiky textu.
- label=: Přidá štítek do pruhů
- mean_mpg: Pro štítek použijte proměnnou mean_mpg
- h pouze ovládá umístění štítku. Hodnoty uzavřené na 1 zobrazí štítek v horní části pruhu a vyšší hodnoty posunou štítek dolů. Pokud je orientace grafu vertikální, změňte hjust na vjust.
- color=”white”: Změna barvy textu. Zde použijete bílou barvu.
- size=3: Nastavte velikost textu.
Výstup:
Shrnutí
Sloupcový graf je užitečný, když je osa x kategorická proměnná. Osa y může být buď počet nebo souhrnná statistika. Níže uvedená tabulka shrnuje, jak ovládat sloupcový graf pomocí ggplot2:
Objektivní | Kód |
---|---|
Počítat |
ggplot(df, eas(x= factor(x1)) + geom_bar() |
Počítejte s různou barvou výplně |
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar() |
Počítejte se skupinami, naskládané |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Počítejte se skupinami vedle sebe |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar() |
Počítat se skupinami, naskládané v % |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Hodnoty |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |