Søjlediagram og histogram i R (med eksempel)
Et søjlediagram er en fantastisk måde at vise kategoriske variable på x-aksen. Denne type graf angiver to aspekter i y-aksen.
- Den første tæller antallet af forekomster mellem grupperne.
- Den anden viser en opsummerende statistik (min, max, gennemsnit og så videre) for en variabel på y-aksen.
Du vil bruge mtcars-datasættet med følgende variabler:
- cyl: nummer på cylinderen i bilen. Numerisk variabel
- am: Type transmission. 0 for automatisk og 1 for manuel. Numerisk variabel
- mpg: Miles per gallon. Numerisk variabel
Sådan opretter du søjlediagram
For at lave graf i R, kan du bruge biblioteket ggplot, som opretter grafer, der er klar til udgivelse. Den grundlæggende syntaks for dette bibliotek er:
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()`
I denne vejledning er du interesseret i det geometriske objekt geom_bar(), der skaber søjlediagrammet.
Søjlediagram: antal
Din første graf viser frekvensen af cylinder med geom_bar(). Koden nedenfor er den mest grundlæggende syntaks.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Kode Forklaring
- Du videregiver datasættet mtcars til ggplot.
- Inde i aes()-argumentet tilføjer du x-aksen som en faktorvariabel(cyl)
- + tegnet betyder, at du vil have R til at blive ved med at læse koden. Det gør koden mere læsbar ved at bryde den.
- Brug geom_bar() til det geometriske objekt.
Output:
Bemærk: sørg for at konvertere variablerne til en faktor ellers behandler R variablerne som numeriske. Se eksemplet nedenfor.
Tilpas grafen
Fire argumenter kan overføres for at tilpasse grafen:
- `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
Skift farven på søjlerne
Du kan ændre farven på søjlerne. Bemærk, at farverne på søjlerne alle er ens.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Kode Forklaring
- Farverne på søjlerne styres af aes()-kortlægningen inde i det geometriske objekt (dvs. ikke i ggplot()). Du kan ændre farven med udfyldningsargumenterne. Her vælger du koralfarven.
Output:
Du kan bruge denne kode:
grDevices::colors()
for at se alle de tilgængelige farver i R. Der er omkring 650 farver.
Skift intensiteten
Du kan øge eller mindske intensiteten af søjlernes farve
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Kode Forklaring
- For at øge/mindske intensiteten af bjælken, kan du ændre værdien af alfa. En stor alfa øger intensiteten, og lav alfa reducerer intensiteten. alfa varierer fra 0 til 1. Hvis 1, så er farven den samme som paletten. Hvis 0, er farven hvid. Du vælger alfa = 0.1.
Output:
Farve efter grupper
Du kan ændre farverne på søjlerne, hvilket betyder en forskellig farve for hver gruppe. For eksempel har cyl variabel tre niveauer, så kan du plotte søjlediagrammet med tre farver.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Kode Forklaring
- Argumentfyldet inde i aes() tillader at ændre farven på bjælken. Du ændrer farven ved at indstille fill = x-akse variabel. I dit eksempel er x-aksevariablen cyl; fyld = faktor(cyl)
Output:
Tilføj en gruppe i søjlerne
Du kan yderligere opdele y-aksen baseret på et andet faktorniveau. For eksempel kan du tælle antallet af automatiske og manuelle gear baseret på cylindertypen.
Du vil fortsætte som følger:
- Trin 1: Opret datarammen med mtcars datasæt
- Trin 2: Mærk am variabelen med auto til automatgear og man for manuel gearkasse. Konverter am og cyl som en faktor, så du ikke behøver at bruge factor() i ggplot()-funktionen.
- Trin 3: Plot søjlediagrammet for at tælle antallet af transmissioner pr. cylinder
library(dplyr) # Step 1 data <- mtcars % > % #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
Du har datasættet klar, du kan plotte grafen;
# Trin 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Kode Forklaring
- ggpplot() indeholder datasættets data og aes().
- I aes() inkluderer du variablen x-akse og hvilken variabel der kræves for at udfylde bjælken (dvs. am)
- geom_bar(): Opret søjlediagrammet
Output:
Kortlægningen vil fylde bjælken med to farver, en for hvert niveau. Det er nemt at ændre gruppen ved at vælge andre faktorvariabler i datasættet.
Søjlediagram i procent
Du kan visualisere bjælken i procent i stedet for det rå antal.
# Søjlediagram i procent
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Kode Forklaring
- Brug position = "fill" i geom_bar()-argumentet for at skabe en grafik med procent i y-aksen.
Output:
Side om side stænger
Det er nemt at plotte søjlediagrammet med gruppevariablen side om side.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Kode Forklaring
- position=position_dodge(): Fortæller eksplicit, hvordan søjlerne skal arrangeres
Output:
Histogram
I den anden del af vejledningen til søjlediagrammet kan du repræsentere gruppen af variable med værdier på y-aksen.
Dit mål er at lave en graf med den gennemsnitlige mile pr. gallon for hver type cylinder. For at tegne en informativ graf skal du følge disse trin:
- Trin 1: Opret en ny variabel med den gennemsnitlige mile pr. gallon pr. cylinder
- Trin 2: Opret et grundlæggende histogram
- Trin 3: Skift retningen
- Trin 4: Skift farve
- Trin 5: Skift størrelse
- Trin 6: Tilføj etiketter til grafen
Trin 1) Opret en ny variabel
Du opretter en dataramme ved navn data_histogram, som blot returnerer de gennemsnitlige miles per gallon efter antallet af cylindre i bilen. Du kalder denne nye variabel mean_mpg, og du afrunder middelværdien med to decimaler.
# Trin 1
data_histogram <- mtcars % > % mutate(cyl = factor(cyl)) % > % group_by(cyl) % > % summarize(mean_mpg = round(mean(mpg), 2))
Trin 2) Lav et grundlæggende histogram
Du kan plotte histogrammet. Det er ikke klar til at kommunikere for at blive leveret til kunden, men giver os en intuition om tendensen.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Kode Forklaring
- aes() har nu to variable. Cyl-variablen refererer til x-aksen, og middel_mpg er y-aksen.
- Du skal sende argumentet stat = "identitet" for at henvise til variablen i y-aksen som en numerisk værdi. geom_bar bruger stat=”bin” som standardværdi.
Output:
Trin 3) Skift retningen
Du ændrer grafens orientering fra lodret til vandret.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Kode Forklaring
- Du kan styre retningen af grafen med coord_flip().
Output:
Trin 4) Skift farve
Du kan differentiere farverne på søjlerne i henhold til faktorniveauet for x-aksevariablen.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Kode Forklaring
- Du kan plotte grafen efter grupper med fill= cyl mapping. R tager sig automatisk af farverne baseret på niveauerne af cyl variabel
Output:
Trin 5) Skift størrelse
For at få grafen til at se smukkere ud, reducerer du bjælkens bredde.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Kode Forklaring
- Bredde-argumentet inde i geom_bar() styrer bjælkens størrelse. Større værdi øger bredden.
- Bemærk, du gemmer grafen i den variable graf. Det gør du, fordi det næste trin ikke vil ændre koden for den variable graf. Det forbedrer kodens læsbarhed.
Output:
Trin 6) Tilføj etiketter til grafen
Det sidste trin består i at tilføje værdien af variablen mean_mpg i etiketten.
graph + geom_text(aes(label = mean_mpg), hjust = 1.5, color = "white", size = 3) + theme_classic()
Kode Forklaring
- Funktionen geom_text() er nyttig til at styre tekstens æstetik.
- label=: Tilføj en etiket inde i søjlerne
- mean_mpg: Brug variablen mean_mpg til etiketten
- hjust styrer placeringen af etiketten. Værdier lukket til 1 viser etiketten øverst på bjælken, og højere værdier bringer etiketten til bunden. Hvis grafens orientering er lodret, skal du ændre hjust til vjust.
- color=”white”: Skift farven på teksten. Her bruger du den hvide farve.
- size=3: Indstil størrelsen på teksten.
Output:
Resumé
Et søjlediagram er nyttigt, når x-aksen er en kategorisk variabel. Y-aksen kan enten være en optælling eller en opsummerende statistik. Tabellen nedenfor opsummerer, hvordan man styrer søjlediagram med ggplot2:
Objektiv | Kode |
---|---|
Tælle |
ggplot(df, eas(x= factor(x1)) + geom_bar() |
Tæl med forskellig farve på fyld |
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar() |
Tæl med grupper, stablet |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Tæl med grupper, side om side |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar() |
Tæl med grupper, stablet i % |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Værdier |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |