Stapeldiagram och histogram i R (med exempel)
Ett stapeldiagram รคr ett utmรคrkt sรคtt att visa kategoriska variabler i x-axeln. Denna typ av graf betecknar tvรฅ aspekter pรฅ y-axeln.
- Den fรถrsta rรคknar antalet fรถrekomster mellan grupper.
- Den andra visar en sammanfattande statistik (min, max, medel, och sรฅ vidare) fรถr en variabel pรฅ y-axeln.
Du kommer att anvรคnda mtcars dataset med fรถljande variabler:
- cyl: Nummer pรฅ cylindern i bilen. Numerisk variabel
- am: Typ av รถverfรถring. 0 fรถr automatisk och 1 fรถr manuell. Numerisk variabel
- mpg: Miles per gallon. Numerisk variabel
Hur man skapar stapeldiagram
Fรถr att skapa en graf i R, kan du anvรคnda biblioteket ggplot som skapar grafer som รคr fรคrdiga fรถr publicering. Den grundlรคggande syntaxen fรถr detta bibliotek รคr:
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 den hรคr handledningen รคr du intresserad av det geometriska objektet geom_bar() som skapar stapeldiagrammet.
Stapeldiagram: rรคkna
Din fรถrsta graf visar cylinderfrekvensen med geom_bar(). Koden nedan รคr den mest grundlรคggande syntaxen.
library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
geom_bar()
Code Fรถrklaring
- Du skickar datasetet mtcars till ggplot.
- Inuti aes()-argumentet lรคgger du till x-axeln som en faktorvariabel (cyl)
- Tecknet + betyder att du vill att R ska fortsรคtta lรคsa koden. Det gรถr koden mer lรคsbar genom att bryta den.
- Anvรคnd geom_bar() fรถr det geometriska objektet.
Produktion:
Anmรคrkningar: se till att du konverterar variablerna till en faktor annars behandlar R variablerna som numeriska. Se exemplet nedan.
Anpassa grafen
Fyra argument kan skickas fรถr att anpassa 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
รndra fรคrgen pรฅ staplarna
Du kan รคndra fรคrgen pรฅ staplarna. Observera att fรคrgerna pรฅ staplarna alla รคr lika.
# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
geom_bar(fill = "coral") +
theme_classic()
Code Fรถrklaring
- Fรคrgerna pรฅ staplarna styrs av aes()-kartanping inuti det geometriska objektet (dvs. inte i ggplot()). Du kan รคndra fรคrgen med fyllningsargumenten. Hรคr vรคljer du korallfรคrgen.
Produktion:
Du kan anvรคnda den hรคr koden:
grDevices::colors()
fรถr att se alla fรคrger som finns tillgรคngliga i R. Det finns cirka 650 fรคrger.
รndra intensiteten
Du kan รถka eller minska intensiteten pรฅ staplarnas fรคrg
# Change intensity
ggplot(mtcars,
aes(factor(cyl))) +
geom_bar(fill = "coral",
alpha = 0.5) +
theme_classic()
Code Fรถrklaring
- Fรถr att รถka/minska intensiteten pรฅ stapeln kan du รคndra vรคrdet pรฅ alfa. En stor alfa รถkar intensiteten och lรฅg alfa minskar intensiteten. alfa varierar frรฅn 0 till 1. Om 1 รคr fรคrgen densamma som paletten. Om 0 รคr fรคrgen vit. Du vรคljer alfa = 0.1.
Produktion:
Fรคrglรคgg efter grupper
Du kan รคndra fรคrgerna pรฅ staplarna, vilket betyder en annan fรคrg fรถr varje grupp. Till exempel har cyl variabel tre nivรฅer, dรฅ kan du rita stapeldiagrammet med tre fรคrger.
# Color by group
ggplot(mtcars, aes(factor(cyl),
fill = factor(cyl))) +
geom_bar()
Code Fรถrklaring
- Argumentfyllningen inuti aes() tillรฅter att รคndra fรคrgen pรฅ stapeln. Du รคndrar fรคrgen genom att stรคlla in fill = x-axelvariabel. I ditt exempel รคr x-axelns variabel cyl; fyll = faktor(cyl)
Produktion:
Lรคgg till en grupp i staplarna
Du kan ytterligare dela upp y-axeln baserat pรฅ en annan faktornivรฅ. Till exempel kan du rรคkna antalet automatiska och manuella vรคxellรฅdor baserat pรฅ cylindertypen.
Du kommer att gรฅ tillvรคga enligt fรถljande:
- Steg 1: Skapa dataramen med mtcars dataset
- Steg 2: Mรคrk variabeln am med auto fรถr automatisk vรคxellรฅda och man fรถr manuell vรคxellรฅda. Konvertera am och cyl som en faktor sรฅ att du inte behรถver anvรคnda factor() i ggplot()-funktionen.
- Steg 3: Rita stapeldiagrammet fรถr att rรคkna antalet transmissioner per cylinder
library(dplyr)
# Step 1
data <- mtcars % > %
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
cyl = factor(cyl))
Du har datasetet redo, du kan plotta grafen;
# Steg 3
ggplot(data, aes(x = cyl, fill = am)) +
geom_bar() +
theme_classic()
Code Fรถrklaring
- ggpplot() innehรฅller datauppsรคttningsdata och aes().
- I aes() inkluderar du variabeln x-axeln och vilken variabel som krรคvs fรถr att fylla stapeln (dvs. am)
- geom_bar(): Skapa stapeldiagrammet
Produktion:
Kartanping kommer att fylla stapeln med tvรฅ fรคrger, en fรถr varje nivรฅ. Det รคr enkelt att รคndra gruppen genom att vรคlja andra faktorvariabler i datamรคngden.
Stapeldiagram i procent
Du kan visualisera stapeln i procent istรคllet fรถr det rรฅa antalet.
# Stapeldiagram i procent
ggplot(data, aes(x = cyl, fill = am)) +
geom_bar(position = "fill") +
theme_classic()
Code Fรถrklaring
- Anvรคnd position = โfillโ i argumentet geom_bar() fรถr att skapa en grafik med procent i y-axeln.
Produktion:
Sida vid sida barer
Det รคr lรคtt att plotta stapeldiagrammet med gruppvariabeln sida vid sida.
# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
geom_bar(position = position_dodge()) +
theme_classic()
Code Fรถrklaring
- position=position_dodge(): Berรคttar uttryckligen hur man ordnar staplarna
Produktion:
Histogram
I den andra delen av stapeldiagramhandledningen kan du representera gruppen av variabler med vรคrden pรฅ y-axeln.
Ditt mรฅl รคr att skapa en graf med den genomsnittliga milen per gallon fรถr varje typ av cylinder. Fรถr att rita en informativ graf fรถljer du dessa steg:
- Steg 1: Skapa en ny variabel med den genomsnittliga milen per gallon per cylinder
- Steg 2: Skapa ett grundlรคggande histogram
- Steg 3: รndra orienteringen
- Steg 4: รndra fรคrg
- Steg 5: รndra storleken
- Steg 6: Lรคgg till etiketter i diagrammet
Steg 1) Skapa en ny variabel
Du skapar en dataram som heter data_histogram som helt enkelt returnerar genomsnittliga miles per gallon med antalet cylindrar i bilen. Du kallar denna nya variabel mean_mpg, och du avrundar medelvรคrdet med tvรฅ decimaler.
# Steg 1
data_histogram <- mtcars % > % mutate(cyl = factor(cyl)) % > % group_by(cyl) % > % summarize(mean_mpg = round(mean(mpg), 2))
Steg 2) Skapa ett grundlรคggande histogram
Du kan plotta histogrammet. Det รคr inte redo att kommunicera fรถr att levereras till kunden men ger oss en intuition om trenden.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
geom_bar(stat = "identity")
Code Fรถrklaring
- aes() har nu tvรฅ variabler. Cyl-variabeln hรคnvisar till x-axeln, och mean_mpg รคr y-axeln.
- Du mรฅste skicka argumentet stat=โidentityโ fรถr att referera till variabeln i y-axeln som ett numeriskt vรคrde. geom_bar anvรคnder stat=โbinโ som standardvรคrde.
Produktion:
Steg 3) รndra orienteringen
Du รคndrar grafens orientering frรฅn vertikal till horisontell.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
geom_bar(stat = "identity") +
coord_flip()
Code Fรถrklaring
- Du kan styra grafens orientering med coord_flip().
Produktion:
Steg 4) รndra fรคrgen
Du kan differentiera fรคrgerna pรฅ staplarna efter faktornivรฅn fรถr x-axelvariabeln.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_classic()
Code Fรถrklaring
- Du kan plotta grafen i grupper med fill= cyl-avbildningenpingR tar automatiskt hand om fรคrgerna baserat pรฅ nivรฅerna av cyl-variabler
Produktion:
Steg 5) รndra storleken
Fรถr att grafen ska se snyggare ut minskar du bredden pรฅ stapeln.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
geom_bar(stat = "identity",
width = 0.5) +
coord_flip() +
theme_classic()
Code Fรถrklaring
- Breddargumentet inuti geom_bar() styr storleken pรฅ stapeln. Stรถrre vรคrde รถkar bredden.
- Observera att du lagrar grafen i den variabla grafen. Du gรถr det eftersom nรคsta steg inte kommer att รคndra koden fรถr variabelgrafen. Det fรถrbรคttrar kodens lรคsbarhet.
Produktion:
Steg 6) Lรคgg till etiketter i diagrammet
Det sista steget bestรฅr i att lรคgga till vรคrdet av variabeln mean_mpg i etiketten.
graph +
geom_text(aes(label = mean_mpg),
hjust = 1.5,
color = "white",
size = 3) +
theme_classic()
Code Fรถrklaring
- Funktionen geom_text() รคr anvรคndbar fรถr att styra textens estetik.
- label=: Lรคgg till en etikett inuti staplarna
- mean_mpg: Anvรคnd variabeln mean_mpg fรถr etiketten
- hjust styr etikettens placering. Vรคrden stรคngda till 1 visar etiketten รถverst i fรคltet, och hรถgre vรคrden fรถr etiketten till botten. Om grafens orientering รคr vertikal, รคndra hjust till vjust.
- color=โwhiteโ: รndra fรคrgen pรฅ texten. Hรคr anvรคnder du den vita fรคrgen.
- size=3: Stรคll in storleken pรฅ texten.
Produktion:
Sammanfattning
Ett stapeldiagram รคr anvรคndbart nรคr x-axeln รคr en kategorisk variabel. Y-axeln kan vara antingen en rรคkning eller en sammanfattande statistik. Tabellen nedan sammanfattar hur man styr stapeldiagram med ggplot2:
| Mรฅl | Code |
|---|---|
| Att Rรคkna |
ggplot(df, eas(x= factor(x1)) + geom_bar() |
| Rรคkna med olika fรคrg pรฅ fyllningen |
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar() |
| Rรคkna med grupper, staplade |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
| Rรคkna med grupper, sida vid sida |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar() |
| Rรคkna med grupper, staplade i % |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
| Vรคrden |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |













