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