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.

  1. Den første tæller antallet af forekomster mellem grupperne.
  2. 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:

Søjlediagram: antal

Bemærk: sørg for at konvertere variablerne til en faktor ellers behandler R variablerne som numeriske. Se eksemplet nedenfor.

Søjlediagram: antal

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:

Skift farven på søjlerne

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:

Skift intensiteten

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:

Farve efter grupper

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:

Tilføj en gruppe i søjlerne

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:

Søjlediagram i procent

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:

Side om Side barer

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:

Histogram

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:

Histogram

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:

Histogram

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:

Histogram

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:

Histogram

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