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.
- De eerste telt het aantal voorkomen tussen groepen.
- De tweede toont een samenvattende statistiek (min, max, gemiddelde, enzovoort) van een variabele op de y-as.
Je gebruikt de mtcars-dataset met de volgende variabelen:
- cyl: nummer van de cilinder in de auto. Numerieke variabele
- am: Type verzending. 0 voor automatisch en 1 voor handmatig. Numerieke variabele
- mpg: mijlen per gallon. Numerieke variabele
In deze tutorial leer je
- Hoe een staafdiagram te maken
- Verander de kleur van de balken
- Verander de intensiteit
- Kleur per groep
- Voeg een groep toe in de bars
- Staafdiagram in procenten
- Zij aan zij bars
- Histogram
Hoe een staafdiagram te maken
Om een grafiek in R te maken, kunt u de bibliotheek ggplot gebruiken die grafieken maakt die klaar zijn voor publicatie. De basissyntaxis van deze bibliotheek is:
ggplot(data, mapping = aes()) +geometric objectarguments:data: dataset used to plot the graphmapping: Control the x and y-axisgeometric 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 tutorial ben je geïnteresseerd in het geometrische object geom_bar () waarmee het staafdiagram wordt gemaakt.
Staafdiagram: tel
Uw eerste grafiek toont de frequentie van cilinder met geom_bar (). De onderstaande code is de meest elementaire syntaxis.
library(ggplot2)# Most basic bar chartggplot(mtcars, aes(x = factor(cyl))) +geom_bar()
Code Verklaring
- U geeft de dataset mtcars door aan ggplot.
- Binnen het aes () argument voeg je de x-as toe als een factor variabele (cyl)
- Het + -teken betekent dat u wilt dat R de code blijft lezen. Het maakt de code leesbaarder door deze te breken.
- Gebruik geom_bar () voor het geometrische object.
Uitgang:
Opmerking : zorg ervoor dat u de variabelen naar een factor converteert, anders behandelt R de variabelen als numeriek. Zie onderstaand voorbeeld.
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 barsggplot(mtcars, aes(x = factor(cyl))) +geom_bar(fill = "coral") +theme_classic()
Code Verklaring
- De kleuren van de balken worden bestuurd door de aes () mapping binnen het geometrische object (dus niet in de ggplot ()). U kunt de kleur wijzigen met de opvulargumenten. Hier kies je de koraalkleur.
Uitgang:
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 intensityggplot(mtcars,aes(factor(cyl))) +geom_bar(fill = "coral",alpha = 0.5) +theme_classic()
Code Verklaring
- Om de intensiteit van de balk te verhogen / verlagen, kunt u de waarde van de alpha wijzigen. Een grote alfa verhoogt de intensiteit en een lage alfa verlaagt de intensiteit. alpha varieert van 0 tot 1. Indien 1, dan is de kleur hetzelfde als het palet. Indien 0, is de kleur wit. U kiest alpha = 0,1.
Uitgang:
Kleur per groep
U kunt de kleuren van de balken wijzigen, dus voor elke groep een andere kleur. De variabele cyl heeft bijvoorbeeld drie niveaus, waarna u het staafdiagram met drie kleuren kunt plotten.
# Color by groupggplot(mtcars, aes(factor(cyl),fill = factor(cyl))) +geom_bar()
Code Verklaring
- De argumentvulling binnen de aes () maakt het mogelijk om de kleur van de balk te wijzigen. U wijzigt de kleur door fill = x-axis variable in te stellen. In uw voorbeeld is de variabele op de x-as cyl; fill = factor (cyl)
Uitgang:
Voeg een groep toe in de bars
U kunt de y-as verder splitsen op basis van een ander factorniveau. U kunt bijvoorbeeld het aantal automatische en handmatige transmissies tellen op basis van het cilindertype.
U gaat als volgt te werk:
- Stap 1: Maak het dataframe met de mtcars-dataset
- Stap 2: Label de variabele am met auto voor automatische transmissie en man voor handmatige verzending. Converteer am en cyl als een factor, zodat u factor () niet hoeft te gebruiken in de functie ggplot ().
- Stap 3: Teken het staafdiagram om het aantal transmissies per cilinder te tellen
library(dplyr)# Step 1data <- mtcars % > %#Step 2mutate(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 Verklaring
- De ggpplot () bevat de datasetgegevens en de aes ().
- In de aes () neem je de variabele x-as op en welke variabele is vereist om de balk te vullen (bijv. Am)
- geom_bar (): Maak het staafdiagram
Uitgang:
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 procenten visualiseren in plaats van het onbewerkte aantal.
# Staafdiagram in procenten
ggplot(data, aes(x = cyl, fill = am)) +geom_bar(position = "fill") +theme_classic()
Code Verklaring
- Gebruik position = "fill" in het argument geom_bar () om een afbeelding te maken met een percentage in de y-as.
Uitgang:
Zij aan zij bars
Het is gemakkelijk om het staafdiagram met de groepsvariabele naast elkaar te plotten.
# Bar chart side by sideggplot(data, aes(x = cyl, fill = am)) +geom_bar(position = position_dodge()) +theme_classic()
Code Verklaring
- position = position_dodge (): geeft expliciet aan hoe de staven moeten worden gerangschikt
Uitgang:
Histogram
In het tweede deel van de zelfstudie over staafdiagrammen kunt u de groep variabelen weergeven met waarden op de y-as.
Uw 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 eenvoudig histogram
- Stap 3: Verander de oriëntatie
- Stap 4: Verander de kleur
- Stap 5: verander de grootte
- Stap 6: voeg labels toe aan de grafiek
Stap 1) Maak een nieuwe variabele
U maakt een dataframe met de naam data_histogram dat eenvoudigweg het gemiddelde aantal kilometers 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 eenvoudig histogram
U kunt het histogram plotten. Het is niet klaar om te communiceren om aan de klant te worden geleverd, maar geeft ons een intuïtie over de trend.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +geom_bar(stat = "identity")
Code Verklaring
- De aes () heeft nu twee variabelen. De variabele cyl verwijst naar de x-as en de gemiddelde_mpg is de y-as.
- U moet het argument stat = "identity" doorgeven om de variabele in de y-as als een numerieke waarde te verwijzen. geom_bar gebruikt stat = "bin" als standaardwaarde.
Uitgang:
Stap 3) Verander de oriëntatie
U verandert de oriëntatie van de grafiek van verticaal naar horizontaal.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +geom_bar(stat = "identity") +coord_flip()
Code Verklaring
- U kunt de oriëntatie van de grafiek regelen met coordin_flip ().
Uitgang:
Stap 4) Verander de kleur
U kunt de kleuren van de staven differentiëren op basis van het factorniveau van de x-asvariabele.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +geom_bar(stat = "identity") +coord_flip() +theme_classic()
Code Verklaring
- U kunt de grafiek in groepen uitzetten met de fill = cyl-toewijzing. R zorgt automatisch voor de kleuren op basis van de niveaus van de variabele cyl
Uitgang:
Stap 5) Wijzig de maat
Om de grafiek er mooier uit te laten zien, verklein je 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 Verklaring
- Het breedte-argument in de geom_bar () bepaalt de grootte van de balk. Een hogere waarde vergroot de breedte.
- Let op, je slaat de grafiek op in de variabele grafiek. U doet dit omdat de volgende stap de code van de variabelegrafiek niet verandert. Het verbetert de leesbaarheid van de code.
Uitgang:
Stap 6) Voeg labels toe aan de grafiek
De laatste stap bestaat uit het toevoegen van de waarde van de variabele mean_mpg in het label.
graph +geom_text(aes(label = mean_mpg),hjust = 1.5,color = "white",size = 3) +theme_classic()
Code Verklaring
- 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 tot 1 geven het label bovenaan de balk weer, en hogere waarden brengen het label onderaan. Als de oriëntatie van de grafiek verticaal is, wijzigt u 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.
Uitgang:
Overzicht
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 geeft een overzicht van hoe u een staafdiagram kunt bedienen met ggplot2:
Objectief |
code |
---|---|
Tellen |
ggplot(df, eas(x= factor(x1)) + geom_bar() |
Tel met verschillende kleuren vulling |
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() |
Tel met groepen, gestapeld in% |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Waarden |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |