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.

  1. První počítá počet výskytů mezi skupinami.
  2. 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:

Sloupcový graf: počet

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.

Sloupcový graf: počet

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:

Změňte barvu pruhů

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:

Změňte intenzitu

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:

Barva podle skupin

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:

Přidejte skupinu do pruhů

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:

Sloupcový graf v procentech

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:

Side by Side Bars

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:

Histogram

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:

Histogram

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:

Histogram

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:

Histogram

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:

Histogram

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")