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.

  1. Primul numără numărul de apariții între grupuri.
  2. 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:

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`: 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:

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

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:

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

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:

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

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:

Adăugați un grup în baruri

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:

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

Explicarea codului

  • position=position_dodge(): Spune explicit cum să aranjezi barele

ieșire:

Baruri unul lângă altul

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:

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

Explicarea codului

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

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:

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

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:

Histogramă

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:

Histogramă

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