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.

  • 📊 Distincție de bază: O diagramă cu bare rezumă o variabilă categorică, în timp ce o histogramă împarte o singură variabilă continuă în intervale.
  • 🧱 Gramatica graficii: Fiecare grafic combină un set de date, o hartă aes()pingși un obiect geometric unit cu semnul plus.
  • 🎨 Controlul culorii: Plasează fill-ul în interiorul geom_bar() pentru o culoare uniformă și în interiorul aes() pentru a colora barele după grup.
  • 📐 Ajustări de poziție: position = „fill” convertește numărătoarea în procente, iar position_dodge() plasează barele grupate una lângă alta.
  • 🔢 Reprezentarea grafică a valorilor: Transmiteți stat = „identitate” atunci când axa y conține deja o statistică calculată, cum ar fi o medie de grup.
  • 📏 Clasificarea histogramei: Setați intervalele sau lățimea intervalelor în geom_histogram(), deoarece valoarea implicită de 30 de intervale rareori se potrivește datelor.

Histogramă cu diagramă cu bare în R

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.

  1. Prima numără numărul de apariții din fiecare grup.
  2. 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:

Diagramă cu bare: numără

notițe: asigurați-vă că convertiți variabilele într-un factor, altfel R tratează variabilele ca fiind numerice. Vezi exemplul de mai jos.

Diagramă cu bare: numără

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:

Schimbați culoarea barelor

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:

Schimbați intensitatea

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:

Colorează după grupuri

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:

Adăugați un grup în baruri

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:

Diagramă cu bare în procente

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:

Baruri unul lângă altul

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:

Histogramă

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:

Histogramă

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:

Histogramă

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:

Histogramă

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:

Histogramă

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)

Întrebări frecvente

Folosește o histogramă atunci când variabila de pe axa x este continuă și vrei să-i vezi distribuția. Folosește o diagramă cu bare atunci când axa x conține categorii distincte și vrei să le compari.

În interiorul funcției aes(), fill mapează o variabilă la o culoare, astfel încât fiecare grup primește propria nuanță. În afara funcției aes(), în interiorul funcției geom_bar(), fill este o valoare fixă ​​aplicată fiecărei bare.

Nu există un răspuns universal. Începeți cu rădăcina pătrată a numărului de observații, apoi ajustați. Prea puține intervale ascund structuri precum un al doilea vârf, iar prea multe produc o diagramă zgomotoasă și cu spic.

Histogramele reprezintă primul pas standard în analiza exploratorie a datelor pentru proiectele de inteligență artificială, dezvăluind asimetria, valorile aberante și dezechilibrul de clasă înainte ca orice model să fie antrenat. Diagramele cu bare rezumă apoi importanța caracteristicilor și frecvențele categoriilor.

Da. Asistenții inteligenți artificiali pot desena straturi ggplot2 dintr-o descriere simplă a graficului și pot explica erori precum lipsa unui argument statistic. Rulați întotdeauna codul generat pe propriile date pentru a confirma harta.ping este corect.

Rezumați această postare cu: