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.

  1. Den fรถrsta rรคknar antalet fรถrekomster mellan grupper.
  2. 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:

Stapeldiagram: rรคkna

Anmรคrkningar: se till att du konverterar variablerna till en faktor annars behandlar R variablerna som numeriska. Se exemplet nedan.

Stapeldiagram: rรคkna

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:

ร„ndra fรคrgen pรฅ staplarna

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:

ร„ndra intensiteten

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:

Fรคrg efter grupper

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:

Lรคgg till en grupp i staplarna

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:

Stapeldiagram i procent

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:

Side by Side Bars

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:

Histogram

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:

Histogram

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:

Histogram

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:

Histogram

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:

Histogram

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

Sammanfatta detta inlรคgg med: