Diagramă cu bare și histogramă în R cu exemplu
⚡ Rezumat inteligent
Diagramele cu bare și histogramele din R sunt construite cu ggplot2, folosind geom_bar() pentru numărătoare categorică și geom_histogram() pentru distribuții continue. Această demonstrație personalizează culoarea, gruparea...ping, stivuirea, orientarea, clasificarea în compartimente și etichetele în bare din setul de date mtcars.

Ce este o diagramă cu bare în R?
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.
- Prima numără numărul de apariții din fiecare grup.
- A doua prezintă o statistică sumarizată (minim, maxim, medie și așa mai departe) a unei variabile pe axa y.
Vei folosi setul de date mtcars, care are 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
Deoarece o histogramă arată atât de similar, merită să se stabilească diferența înainte de a scrie orice cod.
Diagramă cu bare vs. histogramă în R: Diferențe cheie
Cele două diagrame arată la fel și sunt în mod constant confundate. Răspund la întrebări diferite și folosesc obiecte geometrice diferite.
| Criterii | Bar Chart | Histogramă |
|---|---|---|
| Variabilă pe axa X | Categoric sau factorial | Continuu și numeric |
| Ce reprezintă o bară | O categorie | Un interval, sau o bandă, de valori |
| Spații între bare | Da, categoriile sunt separate | Nu, containerele sunt adiacente |
| Comandă la bară | Poate fi rearanjat liber | Fixat de scala numerică |
| Întrebare răspunsă | Cum se compară grupurile? | Cum este distribuită o variabilă? |
| obiect ggplot2 | geom_bar() | geom_histogram() |
Regula generală: dacă reordonarea barelor ar avea în continuare sens, aveți o diagramă cu bare. Dacă reordonarea lor ar distruge sensul, aveți o histogramă. Pentru rezumate bazate pe cuartile ale aceleiași variabile continue, utilizați o box plot.
Cum se creează o diagramă cu bare în R
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()`
Acest tutorial se concentrează pe obiectul geometric geom_bar(), care desenează diagrama cu bare, și pe geom_histogram() pentru date continue.
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()
Code Explicație
- Transmiteți setul de date mtcars la ggplot.
- În argumentul aes(), setați axa x la variabila 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`: Controls what is plotted on the y-axis. By default `count`, which tallies rows. To plot a value you already computed, 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()
Code Explicație
- Culorile barelor sunt controlate de harta aes()ping în interiorul obiectului geometric (adică nu în ggplot()). Puteți schimba culoarea cu argumentele fill. Aici, alegeți 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()
Code Explicație
- Pentru a crește/micșora intensitatea barei, puteți modifica valoarea alfa. Un alfa mare crește intensitatea, iar un alfa mic o reduce. alfa variază de la 0 la 1. La 1, culoarea se potrivește exact cu paleta; la 0, bara este invizibilă. Aici alegeți alfa = 0.5.
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()
Code Explicație
- Argumentul fill din interiorul funcției aes() schimbă culoarea barei. Culoarea setează fill = variabila pe axa x. În exemplul tău, variabila pe axa x este cyl; fill = factor(cyl)
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))
Cu setul de date gata, puteți trasa graficul:
# Pasul 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Code Explicație
- Apelul ggplot() primește datele setului de date și harta aes()ping.
- Î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:
Hartaping va umple bara cu două culori, câte una pentru fiecare nivel. Schimbarea grupului se face cu ușurință alegând alte variabile factoriale 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()
Code Explicație
- 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()
Code Explicație
- position=position_dodge(): Spune explicit cum să aranjezi barele
ieșire:
Diagramă cu bare cu o statistică sumarizată
În a doua parte a tutorialului, axa y prezintă o valoare calculată, nu un număr. Rețineți că aceasta este tot o diagramă cu bare: o histogramă reală este prezentată mai jos și folosește un obiect geometric diferit.
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ă
Poți reprezenta grafic histograma. Nu este încă suficient de finisată pentru a fi înmânată unui client, dar deja arată tendința.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Code Explicație
- Aes() are acum două variabile. Variabila cyl se referă la axa x, iar mean_mpg este axa y.
- Transmiți stat = „identity” astfel încât geom_bar() să utilizeze variabila axa y așa cum este în loc să numere rânduri. Valoarea implicită pentru geom_bar() este stat = „count”.
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()
Code Explicație
- 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()
Code Explicație
- Puteți reprezenta graficul pe grupuri cu ajutorul funcției fill=cyl map.pingR se ocupă automat de culori pe baza nivelurilor 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()
Code Explicație
- Argumentul width din cadrul funcției geom_bar() controlează grosimea barei. O valoare mai mare o lațește.
- Graficul este stocat în graficul obiectului, deoarece pasul următor îl reutilizează neschimbat. Stocarea graficelor intermediare menține codul lizibil.
ieșire:
Pas 6) Adăugați etichete la grafic
Ultimul pas adaugă valoarea lui mean_mpg ca etichetă în interiorul fiecărei bare.
graph +
geom_text(aes(label = mean_mpg),
hjust = 1.5,
color = "white",
size = 3) +
theme_classic()
Code Explicație
- 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ă
- hjust controlează poziția etichetei pe bară. Valorile apropiate de 1 o plasează aproape de capătul barei, iar valorile mai mari o împing înapoi spre axă. Dacă orientarea graficului este verticală, se schimbă hjust în vjust.
- color="white": Schimbați culoarea textului. Aici folosești culoarea albă.
- dimensiune=3: setați dimensiunea textului.
ieșire:
Cum se ordonează și se etichetează barele într-o diagramă cu bare în R
Două detalii finale separă o diagramă în variantă preliminară de una publicabilă: sortarea barelor după valoare și etichetarea corectă a axelor.
Reordonarea barurilor. ggplot2 aranjează nivelurile factorilor în ordine alfabetică în mod implicit, ceea ce este rareori ordinea cea mai informativă. Încadrați variabila x în reorder() pentru a sorta după o a doua variabilă:
# Sort the bars from lowest to highest mean_mpg ggplot(data_histogram, aes(x = reorder(cyl, mean_mpg), y = mean_mpg)) + geom_bar(stat = "identity", fill = "coral") + theme_classic()
Prefixați variabila de sortare cu un semn minus, reorder(cyl, -mean_mpg), pentru a inversa direcția.
Adăugarea de titluri și etichete ale axelor. Funcția labs() setează fiecare element de text într-un singur apel:
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + labs(title = "Average fuel economy by cylinder count", subtitle = "mtcars dataset", x = "Number of cylinders", y = "Mean miles per gallon", fill = "Cylinders", caption = "Source: mtcars") + theme_classic()
Setați fill = NULL în interiorul labs() pentru a elimina complet titlul legendei și utilizați theme(legend.position = „none”) pentru a elimina legenda atunci când axa x denumește deja grupurile.
Alegerea propriilor culori. Înlocuiți paleta implicită cu una explicită, astfel încât diagrama să se potrivească stilului casei dvs.:
scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))
Cum se creează o histogramă în R cu geom_histogram()
O histogramă arată cum este distribuită o singură variabilă continuă. În loc să numere categorii, ggplot2 împarte intervalul numeric în compartimente și numără câte observații se încadrează în fiecare dintre ele.
library(ggplot2) # Most basic histogram ggplot(mtcars, aes(x = mpg)) + geom_histogram()
R afișează un mesaj care recomandă alegerea unui număr mai mare de bin-uri, deoarece valoarea implicită de 30 de bin-uri este arbitrară. Două argumente controlează acest lucru:
- pubele: numărul de intervale în care se va împărți intervalul.
- lățimea binului: lățimea fiecărui interval, exprimată în unitățile variabilei. Folosiți această opțiune atunci când unitățile au sens.
# Set the number of bins ggplot(mtcars, aes(x = mpg)) + geom_histogram(bins = 10, fill = "coral", color = "white") + theme_classic() # Or set the width of each bin instead ggplot(mtcars, aes(x = mpg)) + geom_histogram(binwidth = 4, fill = "coral", color = "white") + theme_classic()
Clasificarea în intervale (binning) este cea mai importantă alegere într-o histogramă. Prea puține intervale ascund structura reală, cum ar fi un al doilea vârf; prea multe transformă diagrama în zgomot. Încercați mai multe valori înainte de a vă decide asupra uneia.
Compararea grupurilor. Mapați un factor de umplere și setați poziția astfel încât distribuțiile să rămână lizibile:
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) + geom_histogram(bins = 10, position = "identity", alpha = 0.5) + theme_classic()
Cu position = „identity” și un alfa redus, histogramele se suprapun, astfel încât să puteți compara formele direct. Folosiți position = „dodge” dacă preferați să vedeți compartimentele alăturate.
Densitate în loc de numărătoare. Când grupurile diferă ca mărime, reprezentați grafic densitatea astfel încât zonele să fie comparabile și suprapuneți o curbă netezită:
ggplot(mtcars, aes(x = mpg)) + geom_histogram(aes(y = after_stat(density)), bins = 10, fill = "coral", alpha = 0.6) + geom_density(color = "steelblue", linewidth = 1) + theme_classic()
Diagramă cu bare și histogramă în R: Code Referinţă
O diagramă cu bare se potrivește unei axe x categorice, unde axa y este fie un număr, fie o statistică sumarizată. Tabelul de mai jos listează apelul ggplot2 pentru fiecare variantă prezentată mai sus:
| Obiectiv | Code |
|---|---|
| Conta |
ggplot(df, aes(x = factor(x1))) + geom_bar() |
| Numărați cu diferite culori de umplutură |
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar() |
| Numărați cu grupuri, stivuite |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar() |
| Numărați cu grupuri, unul lângă altul |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge()) |
| Numărați cu grupuri, stivuite în % |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill") |
| Valori (statistică rezumativă) |
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity") |
| Histograma unei variabile continue |
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30) |













