Diagramă cu bare și histogramă în R (cu exemplu)
O diagramă cu bare este o modalitate excelentă de a afișa variabilele categorice pe axa x. Acest tip de grafic denotă două aspecte pe axa y.
- Primul numără numărul de apariții între grupuri.
- Al doilea arată o statistică rezumată (min, max, medie și așa mai departe) a unei variabile pe axa y.
Veți folosi setul de date mtcars cu următoarele variabile:
- cyl: numărul cilindrului din mașină. Variabila numerica
- am: Tipul transmisiei. 0 pentru automat și 1 pentru manual. Variabila numerica
- mpg: mile pe galon. Variabila numerica
Cum se creează diagramă cu bare
Pentru a crea un grafic în R, puteți utiliza biblioteca ggplot care creează grafice gata de publicare. Sintaxa de bază a acestei biblioteci este:
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()`
În acest tutorial, sunteți interesat de obiectul geometric geom_bar() care creează diagrama cu bare.
Diagramă cu bare: numără
Primul grafic arată frecvența cilindrului cu geom_bar(). Codul de mai jos este cea mai simplă sintaxă.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Explicarea codului
- Transmiteți setul de date mtcars la ggplot.
- În argumentul aes(), adăugați axa x ca variabilă factor (cyl)
- Semnul + înseamnă că doriți ca R să citească în continuare codul. Face codul mai lizibil prin spargerea lui.
- Utilizați geom_bar() pentru obiectul geometric.
ieșire:
notițe: asigurați-vă că convertiți variabilele într-un factor, altfel R tratează variabilele ca fiind numerice. Vezi exemplul de mai jos.
Personalizați graficul
Pot fi transmise patru argumente pentru a personaliza graficul:
- `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
Schimbați culoarea barelor
Puteți schimba culoarea barelor. Rețineți că culorile barelor sunt toate similare.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Explicarea codului
- Culorile barelor sunt controlate de maparea aes() din interiorul obiectului geometric (adică nu în ggplot()). Puteți schimba culoarea cu argumentele de umplere. Aici, tu alegi culoarea coral.
ieșire:
Puteți folosi acest cod:
grDevices::colors()
pentru a vedea toate culorile disponibile în R. Sunt în jur de 650 de culori.
Schimbați intensitatea
Puteți crește sau micșora intensitatea culorii barelor
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Explicarea codului
- Pentru a crește/scădea intensitatea barei, puteți modifica valoarea alfa. Un alfa mare crește intensitatea, iar alfa scăzută reduce intensitatea. alfa variază de la 0 la 1. Dacă 1, atunci culoarea este aceeași cu paleta. Dacă 0, culoarea este albă. Alegeți alpha = 0.1.
ieșire:
Colorează pe grupuri
Puteți schimba culorile barelor, adică o culoare diferită pentru fiecare grup. De exemplu, variabila cyl are trei niveluri, apoi puteți reprezenta graficul cu bare cu trei culori.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Explicarea codului
- Argumentul de umplere din interiorul aes() permite schimbarea culorii barei. Schimbați culoarea setând umplere = variabilă pe axa x. În exemplul dvs., variabila pe axa x este cyl; umplere = factor (cil)
ieșire:
Adăugați un grup în bare
Puteți împărți în continuare axa y pe baza unui alt nivel de factor. De exemplu, puteți număra numărul de transmisii automate și manuale în funcție de tipul de cilindru.
Veți proceda după cum urmează:
- Pasul 1: Creați cadrul de date cu setul de date mtcars
- Pasul 2: Etichetați variabila am cu auto pentru transmisie automată și man pentru transmisie manuală. Convertiți am și cyl ca factor, astfel încât să nu aveți nevoie să utilizați factor() în funcția ggplot().
- Pasul 3: Trasează diagrama cu bare pentru a număra numărul de transmisii pe cilindru
library(dplyr) # Step 1 data <- mtcars % > % #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
Aveți setul de date pregătit, puteți reprezenta graficul;
# Pasul 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Explicarea codului
- ggpplot() conține datele setului de date și aes().
- În aes() includeți variabila axa x și care variabilă este necesară pentru a umple bara (adică am)
- geom_bar(): Creați diagrama cu bare
ieșire:
Maparea va umple bara cu două culori, una pentru fiecare nivel. Este fără efort să schimbați grupul prin alegerea altor variabile factori din setul de date.
Diagramă cu bare în procente
Puteți vizualiza bara în procente în loc de numărul brut.
# Diagramă cu bare în procente
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Explicarea codului
- Utilizați position = „fill” în argumentul geom_bar() pentru a crea un grafic cu procentaj în axa y.
ieșire:
Bare una lângă alta
Este ușor să reprezentați graficul cu bare cu variabila de grup una lângă alta.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Explicarea codului
- position=position_dodge(): Spune explicit cum să aranjezi barele
ieșire:
Histogramă
În a doua parte a tutorialului diagramei cu bare, puteți reprezenta grupul de variabile cu valori în axa y.
Obiectivul dvs. este de a crea un grafic cu media milă pe galon pentru fiecare tip de cilindru. Pentru a desena un grafic informativ, veți urma acești pași:
- Pasul 1: Creați o nouă variabilă cu media milă pe galon pe cilindru
- Pasul 2: Creați o histogramă de bază
- Pasul 3: Schimbați orientarea
- Pasul 4: Schimbați culoarea
- Pasul 5: Schimbați dimensiunea
- Pasul 6: Adăugați etichete în grafic
Pas 1) Creați o nouă variabilă
Creați un cadru de date numit data_histogram care returnează pur și simplu kilometrii medii pe galon în funcție de numărul de cilindri din mașină. Numiți această nouă variabilă mean_mpg și rotunjiți media cu două zecimale.
# Pasul 1
data_histogram <- mtcars % > % mutate(cyl = factor(cyl)) % > % group_by(cyl) % > % summarize(mean_mpg = round(mean(mpg), 2))
Pas 2) Creați o histogramă de bază
Puteți trasa histograma. Nu este pregătit să comunice pentru a fi livrat clientului, dar ne oferă o intuiție despre tendință.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Explicarea codului
- Aes() are acum două variabile. Variabila cyl se referă la axa x, iar mean_mpg este axa y.
- Trebuie să transmiteți argumentul stat="identity" pentru a face referire la variabila din axa y ca valoare numerică. geom_bar folosește stat="bin" ca valoare implicită.
ieșire:
Pas 3) Schimbați orientarea
Schimbați orientarea graficului de la verticală la orizontală.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Explicarea codului
- Puteți controla orientarea graficului cu coord_flip().
ieșire:
Pas 4) Schimbați culoarea
Puteți diferenția culorile barelor în funcție de nivelul de factor al variabilei axei x.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Explicarea codului
- Puteți reprezenta graficul pe grupuri cu maparea umple=cyl. R are grijă automat de culori în funcție de nivelurile variabilei cyl
ieșire:
Pas 5) Schimbați mărimea
Pentru ca graficul să pară mai frumos, reduceți lățimea barei.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Explicarea codului
- Argumentul lățime din interiorul geom_bar() controlează dimensiunea barei. O valoare mai mare mărește lățimea.
- Rețineți că stocați graficul în graficul variabil. Faceți acest lucru deoarece următorul pas nu va schimba codul graficului variabilă. Îmbunătățește lizibilitatea codului.
ieșire:
Pas 6) Adăugați etichete la grafic
Ultimul pas constă în adăugarea valorii variabilei mean_mpg în etichetă.
graph + geom_text(aes(label = mean_mpg), hjust = 1.5, color = "white", size = 3) + theme_classic()
Explicarea codului
- Funcția geom_text() este utilă pentru a controla estetica textului.
- label=: Adăugați o etichetă în interiorul barelor
- mean_mpg: Folosiți variabila mean_mpg pentru etichetă
- h controlează doar locația etichetei. Valorile închise la 1 afișează eticheta în partea de sus a barei, iar valorile mai mari aduc eticheta în partea de jos. Dacă orientarea graficului este verticală, schimbați hjust în vjust.
- color="white": Schimbați culoarea textului. Aici folosești culoarea albă.
- dimensiune=3: setați dimensiunea textului.
ieșire:
Rezumat
O diagramă cu bare este utilă atunci când axa x este o variabilă categorială. Axa y poate fi fie o numărătoare, fie o statistică rezumată. Tabelul de mai jos rezumă modul de control al diagramei cu bare cu ggplot2:
Obiectiv | Cod |
---|---|
Conta |
ggplot(df, eas(x= factor(x1)) + geom_bar() |
Numărați cu diferite culori de umplutură |
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar() |
Numărați cu grupuri, stivuite |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Numărați cu grupuri, unul lângă altul |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar() |
Numărați cu grupuri, stivuite în % |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Valori |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |