Staafdiagram en histogram in R (met voorbeeld)

Een staafdiagram is een uitstekende manier om categorische variabelen op de x-as weer te geven. Dit type grafiek geeft twee aspecten op de y-as aan.

  1. De eerste telt het aantal gebeurtenissen tussen groepen.
  2. De tweede toont een samenvattende statistiek (min, max, gemiddelde, enzovoort) van een variabele op de y-as.

U gebruikt de mtcars-dataset met de volgende gegevenswing variabelen:

  • cilinder: Nummer van de cilinder in de auto. Numerieke variabele
  • ben: soort transmission. 0 voor automatisch en 1 voor handmatig. Numerieke variabele
  • mpg: mijlen per gallon. Numerieke variabele

Hoe u een staafdiagram maakt

Om een ​​grafiek te maken in R, kunt u de bibliotheek ggplot gebruiken, die grafieken maakt die gereed zijn voor publicatie. De basissyntaxis van deze bibliotheek is:

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()` 

In deze zelfstudie bent u geïnteresseerd in het geometrische object geom_bar() waarmee het staafdiagram wordt gemaakt.

Staafdiagram: tellen

Je eerste grafiek toont de frequentie van cilinder met geom_bar(). De onderstaande code is de meest elementaire syntaxis.

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

Code Uitleg

  • U geeft de dataset mtcars door aan ggplot.
  • Binnen het aes()-argument voeg je de x-as toe als een factorvariabele(cyl)
  • Het + teken betekent dat je wilt dat R de code blijft lezen. Het maakt de code leesbaarder door deze te breken.
  • Gebruik geom_bar() voor het geometrische object.

Output:

Staafdiagram: tellen

Note: zorg ervoor dat u de variabelen omzet in een andere factorwise R behandelt de variabelen als numeriek. Zie het onderstaande voorbeeld.

Staafdiagram: tellen

Pas de grafiek aan

Er kunnen vier argumenten worden doorgegeven om de grafiek aan te passen:

- `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	

Verander de kleur van de balken

U kunt de kleur van de balken wijzigen. Merk op dat de kleuren van de balken allemaal hetzelfde zijn.

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

Code Uitleg

  • De kleuren van de balken worden bepaald door de aes()-toewijzing binnen het geometrische object (dwz niet in de ggplot()). U kunt de kleur wijzigen met de vulargumenten. Hier kies je de koraalkleur.

Output:

Verander de kleur van de balken

U kunt deze code gebruiken:

grDevices::colors()

om alle kleuren te zien die beschikbaar zijn in R. Er zijn ongeveer 650 kleuren.

Verander de intensiteit

U kunt de intensiteit van de kleur van de balken verhogen of verlagen

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

Code Uitleg

  • Om de intensiteit van de balk te verhogen/verlagen, kunt u de waarde van de alfa wijzigen. Een grote alfa verhoogt de intensiteit, en een lage alfa vermindert de intensiteit. alfa varieert van 0 tot 1. Indien 1, dan is de kleur hetzelfde als het palet. Indien 0, is de kleur wit. U kiest alfa = 0.1.

Output:

Verander de intensiteit

Kleur per groep

Je kunt de kleuren van de balken veranderen, wat betekent dat er voor elke groep een andere kleur is. De cil-variabele heeft bijvoorbeeld drie niveaus, waarna u het staafdiagram met drie kleuren kunt uitzetten.

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

Code Uitleg

  • Het argument fill binnen de aes() maakt het mogelijk de kleur van de balk te veranderen. U wijzigt de kleur door de variabele fill = x-as in te stellen. In uw voorbeeld is de variabele op de x-as cil; vullen = factor(cil)

Output:

Kleur per groep

Voeg een groep toe in de balken

U kunt de y-as verder splitsen op basis van een ander factorniveau. U kunt bijvoorbeeld het aantal automatische en handmatige tellen transmission gebaseerd op het cilindertype.

U gaat als volgt te werk:

  • Stap 1: Maak het dataframe met de mtcars-dataset
  • Stap 2: Label de am-variabele met auto voor automatisch transmission en man voor handleiding transmission. Converteer am en cyl als een factor, zodat u factor() niet hoeft te gebruiken in de ggplot()-functie.
  • Stap 3: Teken het staafdiagram om het aantal te tellen transmission door cilinder
library(dplyr)
# Step 1
data <- mtcars % > % 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Je hebt de dataset klaar, je kunt de grafiek plotten;

# Stap 3

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

Code Uitleg

  • De ggpplot() bevat de gegevenssetgegevens en de aes().
  • In de aes() neem je de variabele x-as op en welke variabele nodig is om de balk te vullen (dat wil zeggen am)
  • geom_bar(): Maak het staafdiagram

Output:

Voeg een groep toe in de balken

De mapping vult de balk met twee kleuren, één voor elk niveau. Het is moeiteloos om de groep te veranderen door andere factorvariabelen in de dataset te kiezen.

Staafdiagram in procenten

U kunt de balk in percentage visualiseren in plaats van in de ruwe telling.

# Staafdiagram in percentage

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

Code Uitleg

  • Gebruik position = “fill” in het geom_bar() argument om een ​​afbeelding te maken met een percentage op de y-as.

Output:

Staafdiagram in procenten

Staven naast elkaar

Het is gemakkelijk om het staafdiagram uit te zetten met de groepsvariabele naast elkaar.

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

Code Uitleg

  • position=position_dodge(): Geeft expliciet aan hoe de balken moeten worden gerangschikt

Output:

Staven naast elkaar

histogram

In het tweede deel van de zelfstudie over staafdiagrammen kunt u de groep variabelen weergeven met waarden op de y-as.

Je doel is om een ​​grafiek te maken met de gemiddelde mijl per gallon voor elk type cilinder. Om een ​​informatieve grafiek te tekenen, volgt u deze stappen:

  • Stap 1: Maak een nieuwe variabele met de gemiddelde mijl per gallon per cilinder
  • Stap 2: Maak een basishistogram
  • Stap 3: Verander de richting
  • Stap 4: Verander de kleur
  • Stap 5: Wijzig de maat
  • Stap 6: Voeg labels toe aan de grafiek

Stap 1) Een nieuwe variabele maken

U maakt een dataframe met de naam data_histogram, dat eenvoudigweg de gemiddelde mijlen per gallon retourneert op basis van het aantal cilinders in de auto. Je noemt deze nieuwe variabele mean_mpg, en je rondt het gemiddelde af met twee decimalen.

# Stap 1

data_histogram <- mtcars % > %
mutate(cyl = factor(cyl)) % > %
group_by(cyl) % > %
summarize(mean_mpg = round(mean(mpg), 2))

Stap 2) Maak een basishistogram

U kunt het histogram plotten. Het is niet klaar om te communiceren om aan de klant te worden afgeleverd, maar geeft ons een intuïtie over de trend.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

Code Uitleg

  • De aes() heeft nu twee variabelen. De cil-variabele verwijst naar de x-as en de mean_mpg is de y-as.
  • U moet het argument stat=”identity” doorgeven om de variabele op de y-as als een numerieke waarde te verwijzen. geom_bar gebruikt stat=”bin” als standaardwaarde.

Output:

histogram

Stap 3) Verander de richting

U wijzigt de richting van de grafiek van verticaal naar horizontaal.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

Code Uitleg

  • Je kunt de oriëntatie van de grafiek bepalen met coord_flip().

Output:

histogram

Stap 4) Verander de kleur

U kunt de kleuren van de staven differentiëren op basis van het factorniveau van de variabele op de x-as.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

Code Uitleg

  • U kunt de grafiek per groep uitzetten met de fill= cyl-toewijzing. R zorgt automatisch voor de kleuren op basis van de niveaus van de cil-variabele

Output:

histogram

Stap 5) Verander de maat

Om de grafiek er mooier uit te laten zien, verkleint u de breedte van de balk.

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

Code Uitleg

  • Het breedteargument binnen de geom_bar() bepaalt de grootte van de balk. Een grotere waarde vergroot de breedte.
  • Let op, u slaat de grafiek op in de variabele grafiek. U doet dit omdat de volgende stap de code van de variabele grafiek niet verandert. Het verbetert de leesbaarheid van de code.

Output:

histogram

Stap 6) Voeg labels toe aan de grafiek

De laatste stap bestaat uit het toevoegen van de waarde van de variabele mean_mpg aan het label.

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

Code Uitleg

  • De functie geom_text() is handig om de esthetiek van de tekst te bepalen.
    • label=: Voeg een label toe binnen de balken
    • mean_mpg: Gebruik de variabele mean_mpg voor het label
  • hjust bepaalt de locatie van het label. Waarden gesloten op 1 geven het label bovenaan de balk weer, en hogere waarden brengen het label naar de onderkant. Als de oriëntatie van de grafiek verticaal is, verander dan hjust in vjust.
  • color=”white”: Verander de kleur van de tekst. Hier gebruik je de witte kleur.
  • size=3: Stel de grootte van de tekst in.

Output:

histogram

Samengevat

Een staafdiagram is handig als de x-as een categorische variabele is. De y-as kan een telling of een samenvattende statistiek zijn. De onderstaande tabel vat samen hoe u een staafdiagram kunt besturen met ggplot2:

Objectief Code
Tellen
ggplot(df, eas(x= factor(x1)) + geom_bar()
Tel met verschillende vulkleuren
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()
Tel met groepen, gestapeld
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Tel met groepen, naast elkaar
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()
Tellen met groepen, gestapeld in %
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Values
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity")