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.
- Den fรธrste teller antall forekomster mellom grupper.
- 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:
Merknader: sรธrg for at du konverterer variablene til en faktor ellers behandler R variablene som numeriske. Se eksempelet nedenfor.
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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") |













