Stolpediagram og histogram i R (med eksempel)

Et stolpediagram er en fin mรฅte รฅ vise kategoriske variabler pรฅ x-aksen. Denne typen grafer angir to aspekter i y-aksen.

  1. Den fรธrste teller antall forekomster mellom grupper.
  2. Den andre viser en oppsummeringsstatistikk (min, maks, gjennomsnitt og sรฅ videre) for en variabel pรฅ y-aksen.

Du vil bruke mtcars-datasettet med fรธlgende variabler:

  • cyl: Nummer pรฅ sylinderen i bilen. Numerisk variabel
  • am: Type overfรธring. 0 for automatisk og 1 for manuell. Numerisk variabel
  • mpg: Miles per gallon. Numerisk variabel

Hvordan lage sรธylediagram

For รฅ lage graf i R, kan du bruke biblioteket ggplot som lager grafer som er klare for publisering. Den grunnleggende syntaksen til dette biblioteket 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 opplรฆringen er du interessert i det geometriske objektet geom_bar() som lager stolpediagrammet.

Stolpediagram: telle

Din fรธrste graf viser frekvensen til sylinder med geom_bar(). Koden nedenfor er den mest grunnleggende syntaksen.

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

Kode Forklaring

  • Du sender datasettet mtcars til ggplot.
  • Inne i aes()-argumentet legger du til x-aksen som en faktorvariabel(cyl)
  • +-tegnet betyr at du vil at R skal fortsette รฅ lese koden. Det gjรธr koden mer lesbar ved รฅ bryte den.
  • Bruk geom_bar() for det geometriske objektet.

Utgang:

Stolpediagram: telle

Merknader: sรธrg for at du konverterer variablene til en faktor ellers behandler R variablene som numeriske. Se eksempelet nedenfor.

Stolpediagram: telle

Tilpass grafen

Fire argumenter kan sendes for รฅ 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	

Endre fargen pรฅ stolpene

Du kan endre fargen pรฅ stolpene. Merk at fargene pรฅ stolpene er like.

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

Kode Forklaring

  • Fargene pรฅ stolpene styres av aes()-kartleggingen inne i det geometriske objektet (dvs. ikke i ggplot()). Du kan endre fargen med fyllargumentene. Her velger du korallfargen.

Utgang:

Endre fargen pรฅ stolpene

Du kan bruke denne koden:

grDevices::colors()

for รฅ se alle fargene tilgjengelig i R. Det er rundt 650 farger.

Endre intensiteten

Du kan รธke eller redusere intensiteten til stolpenes farge

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

Kode Forklaring

  • For รฅ รธke/redusere intensiteten til sรธylen, kan du endre verdien pรฅ alfaen. En stor alfa รธker intensiteten, og lav alfa reduserer intensiteten. alfa varierer fra 0 til 1. Hvis 1, er fargen den samme som paletten. Hvis 0, er fargen hvit. Du velger alfa = 0.1.

Utgang:

Endre intensiteten

Fargelegg etter grupper

Du kan endre fargene pรฅ stolpene, noe som betyr en annen farge for hver gruppe. For eksempel har cyl variabel tre nivรฅer, sรฅ kan du plotte sรธylediagrammet med tre farger.

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

Kode Forklaring

  • Argumentfyllet inne i aes() tillater รฅ endre fargen pรฅ linjen. Du endrer fargen ved รฅ sette fyll = x-akse variabel. I ditt eksempel er x-aksevariabelen cyl; fyll = faktor(cyl)

Utgang:

Farge etter grupper

Legg til en gruppe i stolpene

Du kan dele y-aksen videre basert pรฅ et annet faktornivรฅ. For eksempel kan du telle antall automatiske og manuelle girkasser basert pรฅ sylindertypen.

Du vil fortsette som fรธlger:

  • Trinn 1: Lag datarammen med mtcars datasett
  • Trinn 2: Merk am variabelen med auto for automatgir og man for manuell girkasse. Konverter am og cyl som en faktor slik at du ikke trenger รฅ bruke factor() i ggplot()-funksjonen.
  • Trinn 3: Plott sรธylediagrammet for รฅ telle antall overfรธringer per sylinder
library(dplyr)
# Step 1
data <- mtcars % > % 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Du har datasettet klart, du kan plotte grafen;

# Trinn 3

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

Kode Forklaring

  • ggpplot() inneholder datasettdataene og aes().
  • I aes() inkluderer du variabelen x-aksen og hvilken variabel som kreves for รฅ fylle linjen (dvs. am)
  • geom_bar(): Lag sรธylediagrammet

Utgang:

Legg til en gruppe i sรธylene

Kartleggingen vil fylle linjen med to farger, en for hvert nivรฅ. Det er enkelt รฅ endre gruppen ved รฅ velge andre faktorvariabler i datasettet.

Stolpediagram i prosent

Du kan visualisere sรธylen i prosent i stedet for det rรฅ antallet.

# Stolpediagram i prosent

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

Kode Forklaring

  • Bruk posisjon = "fyll" i geom_bar()-argumentet for รฅ lage en grafikk med prosent i y-aksen.

Utgang:

Stolpediagram i prosent

Side ved side stenger

Det er enkelt รฅ plotte stolpediagrammet med gruppevariabelen side ved 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(): Forteller eksplisitt hvordan stolpene skal arrangeres

Utgang:

Side ved side barer

histogram

I den andre delen av stolpediagramopplรฆringen kan du representere gruppen av variabler med verdier i y-aksen.

Mรฅlet ditt er รฅ lage en graf med gjennomsnittlig mil per gallon for hver type sylinder. For รฅ tegne en informativ graf, fรธlger du disse trinnene:

  • Trinn 1: Lag en ny variabel med gjennomsnittlig mil per gallon per sylinder
  • Trinn 2: Lag et grunnleggende histogram
  • Trinn 3: Endre retningen
  • Trinn 4: Endre fargen
  • Trinn 5: Endre stรธrrelsen
  • Trinn 6: Legg til etiketter i grafen

Trinn 1) Opprett en ny variabel

Du oppretter en dataramme kalt data_histogram som ganske enkelt returnerer gjennomsnittlige miles per gallon etter antall sylindre i bilen. Du kaller denne nye variabelen mean_mpg, og du avrunder gjennomsnittet med to desimaler.

# Trinn 1

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

Trinn 2) Lag et grunnleggende histogram

Du kan plotte histogrammet. Den er ikke klar til รฅ kommunisere for รฅ bli levert til kunden, men gir oss en intuisjon om trenden.

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

Kode Forklaring

  • Aes() har nรฅ to variabler. Cyl-variabelen refererer til x-aksen, og mean_mpg er y-aksen.
  • Du mรฅ sende argumentet stat=โ€identityโ€ for รฅ referere til variabelen i y-aksen som en numerisk verdi. geom_bar bruker stat=โ€binโ€ som standardverdi.

Utgang:

histogram

Trinn 3) Endre retningen

Du endrer retningen pรฅ grafen fra vertikal til horisontal.

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

Kode Forklaring

  • Du kan kontrollere retningen til grafen med coord_flip().

Utgang:

histogram

Trinn 4) Endre fargen

Du kan differensiere fargene pรฅ stolpene i henhold til faktornivรฅet til x-aksevariabelen.

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 etter grupper med fill= cyl mapping. R tar seg automatisk av fargene basert pรฅ nivรฅene av cyl variabel

Utgang:

histogram

Trinn 5) Endre stรธrrelse

For รฅ fรฅ grafen til รฅ se penere ut, reduserer du bredden pรฅ stolpen.

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 inne i geom_bar() styrer stรธrrelsen pรฅ linjen. Stรธrre verdi รธker bredden.
  • Merk at du lagrer grafen i variabelgrafen. Du gjรธr det fordi neste trinn ikke vil endre koden til variabelgrafen. Det forbedrer lesbarheten til koden.

Utgang:

histogram

Trinn 6) Legg til etiketter i grafen

Det siste trinnet bestรฅr i รฅ legge til verdien av variabelen mean_mpg i etiketten.

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

Kode Forklaring

  • Funksjonen geom_text() er nyttig for รฅ kontrollere tekstens estetikk.
    • label=: Legg til en etikett inne i stolpene
    • mean_mpg: Bruk variabelen mean_mpg for etiketten
  • hjust kontrollerer plasseringen av etiketten. Verdier lukket til 1 viser etiketten รธverst pรฅ linjen, og hรธyere verdier bringer etiketten til bunnen. Hvis retningen til grafen er vertikal, endre hjust til vjust.
  • color=โ€whiteโ€: Endre fargen pรฅ teksten. Her bruker du den hvite fargen.
  • size=3: Angi stรธrrelsen pรฅ teksten.

Utgang:

histogram

Sammendrag

Et stolpediagram er nyttig nรฅr x-aksen er en kategorisk variabel. Y-aksen kan enten vรฆre en telling eller en oppsummerende statistikk. Tabellen nedenfor oppsummerer hvordan du kontrollerer stolpediagram med ggplot2:

Mรฅlet Kode
Telle
ggplot(df, eas(x= factor(x1)) + geom_bar()
Tell med forskjellig farge pรฅ fyll
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()
Tell med grupper, stablet
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Tell med grupper, side om side
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()
Tell med grupper, stablet i %
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Verdier
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity")

Oppsummer dette innlegget med: