Grafico a barre e istogramma in R (con esempio)

Un grafico a barre รจ un ottimo modo per visualizzare le variabili categoriali sull'asse x. Questo tipo di grafico denota due aspetti nell'asse y.

  1. Il primo conta il numero di occorrenze tra i gruppi.
  2. Il secondo mostra una statistica riassuntiva (minimo, massimo, media e cosรฌ via) di una variabile sull'asse y.

Utilizzerai il set di dati mtcars con le seguenti variabili:

  • cil: numero del cilindro dell'auto. Variabile numerica
  • am: Tipo di trasmissione. 0 per automatico e 1 per manuale. Variabile numerica
  • mpg: miglia per gallone. Variabile numerica

Come creare un grafico a barre

Per creare il grafico in R, puoi utilizzare la libreria ggplot che crea grafici pronti per la pubblicazione. La sintassi di base di questa libreria รจ:

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

In questo tutorial sei interessato all'oggetto geometrico geom_bar() che crea il grafico a barre.

Grafico a barre: conteggio

Il tuo primo grafico mostra la frequenza del cilindro con geom_bar(). Il codice seguente รจ la sintassi piรน elementare.

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

Code Spiegazione

  • Passi il set di dati mtcars a ggplot.
  • All'interno dell'argomento aes(), aggiungi l'asse x come fattore variabile(cyl)
  • Il segno + significa che vuoi che R continui a leggere il codice. Rende il codice piรน leggibile rompendolo.
  • Usa geom_bar() per l'oggetto geometrico.

Produzione:

Grafico a barre: conteggio

Note:: assicurati di convertire le variabili in un fattore altrimenti R tratta le variabili come numeriche. Guarda l'esempio qui sotto.

Grafico a barre: conteggio

Personalizza il grafico

รˆ possibile passare quattro argomenti per personalizzare il grafico:

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

Cambia il colore delle barre

Puoi cambiare il colore delle barre. Tieni presente che i colori delle barre sono tutti simili.

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

Code Spiegazione

  • I colori delle barre sono controllati dalla mappa aes()ping all'interno dell'oggetto geometrico (ovvero non in ggplot()). รˆ possibile modificare il colore tramite gli argomenti di riempimento. In questo caso, si sceglie il colore corallo.

Produzione:

Cambia il colore delle barre

Puoi usare questo codice:

grDevices::colors()

per vedere tutti i colori disponibili in R. Ci sono circa 650 colori.

Cambia l'intensitร 

Puoi aumentare o diminuire l'intensitร  del colore delle barre

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

Code Spiegazione

  • Per aumentare/diminuire l'intensitร  della barra รจ possibile modificare il valore dell'alfa. Un alfa elevato aumenta l'intensitร , mentre un alfa basso riduce l'intensitร . alfa varia da 0 a 1. Se 1, il colore รจ lo stesso della tavolozza. Se 0, il colore รจ bianco. Scegli alfa = 0.1.

Produzione:

Cambia l'intensitร 

Colora per gruppi

Puoi cambiare i colori delle barre, ovvero un colore diverso per ogni gruppo. Ad esempio, la variabile cyl ha tre livelli, quindi puoi tracciare il grafico a barre con tre colori.

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

Code Spiegazione

  • L'argomento fill all'interno di aes() permette di cambiare il colore della barra. Puoi cambiare il colore impostando fill = variabile dell'asse x. Nel tuo esempio, la variabile dell'asse x รจ cyl; riempimento = fattore(cil)

Produzione:

Colore per gruppi

Aggiungi un gruppo nelle barre

Puoi ulteriormente dividere l'asse y in base a un altro livello di fattore. Ad esempio, puoi contare il numero di trasmissioni automatiche e manuali in base al tipo di cilindro.

Procederai come segue:

  • Passaggio 1: crea il frame di dati con il set di dati mtcars
  • Fase 2: etichetta la variabile am con auto per la trasmissione automatica e man per la trasmissione manuale. Converti am e cyl come fattore in modo da non dover usare factor() nella funzione ggplot().
  • Passaggio 3: tracciare il grafico a barre per contare il numero di trasmissioni per cilindro
library(dplyr)
# Step 1
data <- mtcars % > % 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Hai il set di dati pronto, puoi tracciare il grafico;

# Passo 3

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

Code Spiegazione

  • ggpplot() contiene i dati del set di dati e aes().
  • In aes() includi la variabile asse x e quale variabile รจ richiesta per riempire la barra (cioรจ am)
  • geom_bar(): crea il grafico a barre

Produzione:

Aggiungi un gruppo nelle barre

La mappaping La barra verrร  riempita con due colori, uno per ogni livello. รˆ facilissimo cambiare il gruppo scegliendo altre variabili fattoriali nel dataset.

Grafico a barre in percentuale

รˆ possibile visualizzare la barra in percentuale anzichรฉ in conteggio grezzo.

# Grafico a barre in percentuale

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

Code Spiegazione

  • Utilizzare position = โ€œfillโ€ nell'argomento geom_bar() per creare un grafico con percentuale nell'asse y.

Produzione:

Grafico a barre in percentuale

Barre affiancate

รˆ facile tracciare il grafico a barre con la variabile del gruppo affiancata.

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

Code Spiegazione

  • position=position_dodge(): indica esplicitamente come disporre le barre

Produzione:

Barre affiancate

Istogramma

Nella seconda parte del tutorial sul grafico a barre, puoi rappresentare il gruppo di variabili con valori nell'asse y.

Il tuo obiettivo รจ creare un grafico con il miglio medio per gallone per ciascun tipo di bombola. Per disegnare un grafico informativo, seguirai questi passaggi:

  • Passaggio 1: crea una nuova variabile con il miglio medio per gallone per cilindro
  • Passaggio 2: crea un istogramma di base
  • Passaggio 3: modificare l'orientamento
  • Passaggio 4: cambia il colore
  • Passaggio 5: modificare la dimensione
  • Passaggio 6: aggiungi etichette al grafico

Passo 1) Crea una nuova variabile

Crei un frame di dati denominato data_histogram che restituisce semplicemente le miglia medie per gallone in base al numero di cilindri dell'auto. Chiami questa nuova variabile mean_mpg e arrotondi la media con due decimali.

# Passo 1

data_histogram <- mtcars % > %
mutate(cyl = factor(cyl)) % > %
group_by(cyl) % > %
summarize(mean_mpg = round(mean(mpg), 2))

Passo 2) Crea un istogramma di base

รˆ possibile tracciare l'istogramma. Non รจ pronto per la comunicazione e per essere consegnato al cliente, ma ci dร  un'intuizione sulla tendenza.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

Code Spiegazione

  • Aes() ora ha due variabili. La variabile cyl si riferisce all'asse x e mean_mpg รจ l'asse y.
  • รˆ necessario passare l'argomento stat="identity" per riferirsi alla variabile sull'asse y come valore numerico. geom_bar utilizza stat="bin" come valore predefinito.

Produzione:

Istogramma

Passo 3) Cambiare l'orientamento

Si modifica l'orientamento del grafico da verticale a orizzontale.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

Code Spiegazione

  • Puoi controllare l'orientamento del grafico con coord_flip().

Produzione:

Istogramma

Passo 4) Cambia il colore

รˆ possibile differenziare i colori delle barre in base al livello del fattore della variabile dell'asse x.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

Code Spiegazione

  • รˆ possibile tracciare il grafico per gruppi con fill= cyl mapping. R gestisce automaticamente i colori in base ai livelli della variabile cyl

Produzione:

Istogramma

Passo 5) Cambia la taglia

Per rendere il grafico piรน gradevole, riduci la larghezza della barra.

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

Code Spiegazione

  • L'argomento larghezza all'interno di geom_bar() controlla la dimensione della barra. Un valore maggiore aumenta la larghezza.
  • Nota, memorizzi il grafico nel grafico variabile. Lo fai perchรฉ il passaggio successivo non modificherร  il codice del grafico della variabile. Migliora la leggibilitร  del codice.

Produzione:

Istogramma

Passo 6) Aggiungi etichette al grafico

L'ultimo passo consiste nell'aggiungere il valore della variabile mean_mpg nell'etichetta.

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

Code Spiegazione

  • La funzione geom_text() รจ utile per controllare l'estetica del testo.
    • label=: aggiunge un'etichetta all'interno delle barre
    • mean_mpg: utilizza la variabile mean_mpg per l'etichetta
  • hcontrolla semplicemente la posizione dell'etichetta. Valori vicini a 1 visualizzano l'etichetta nella parte superiore della barra, mentre valori piรน alti portano l'etichetta in fondo. Se l'orientamento del grafico รจ verticale, cambia hjust in vjust.
  • color="bianco": cambia il colore del testo. Qui usi il colore bianco.
  • size=3: imposta la dimensione del testo.

Produzione:

Istogramma

Sintesi

Un grafico a barre รจ utile quando l'asse x รจ una variabile categoriale. L'asse y puรฒ essere un conteggio o una statistica riepilogativa. La tabella seguente riassume come controllare il grafico a barre con ggplot2:

Obiettivo Code
Contare
ggplot(df, eas(x= factor(x1)) + geom_bar()
Contare con un colore di riempimento diverso
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()
Contare con gruppi, impilati
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Contare in gruppi, fianco a fianco
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()
Conteggio con gruppi, impilati in%
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")

Riassumi questo post con: