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

Spiegazione del codice

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

Spiegazione del codice

  • I colori delle barre sono controllati dalla mappatura aes() all'interno dell'oggetto geometrico (cioè non in ggplot()). Puoi cambiare il colore con gli argomenti di riempimento. Qui scegli il colore del 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()

Spiegazione del codice

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

Spiegazione del codice

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

Spiegazione del codice

  • 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 mappatura riempirà la barra con due colori, uno per ogni livello. È semplice cambiare il gruppo scegliendo altre variabili fattore nel set di dati.

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

Spiegazione del codice

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

Spiegazione del codice

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

Spiegazione del codice

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

Spiegazione del codice

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

Spiegazione del codice

  • È possibile tracciare il grafico per gruppi con la mappatura fill= cyl. R si occupa automaticamente dei colori in base ai livelli della variabile cil

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

Spiegazione del codice

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

Spiegazione del codice

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