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

Kodfö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()

Kodförklaring

  • Färgerna på staplarna styrs av aes()-mappningen 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()

Kodfö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()

Kodfö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()

Kodfö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

Kartläggningen 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()

Kodfö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()

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

Kodfö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()

Kodfö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()

Kodförklaring

  • Du kan plotta grafen efter grupper med fill= cyl mappningen. R tar automatiskt hand om färgerna baserat på nivåerna av cyl variabel

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

Kodfö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()

Kodfö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 Koda
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")