boxplot() in R: come realizzare BoxGrafici in RStudio [Esempi]
boxplot() in R
boxplot() in R aiuta a visualizzare la distribuzione dei dati per quartile e a rilevare la presenza di valori anomali. Puoi usare l'oggetto geometrico geom_boxplot() dalla libreria ggplot2 per disegnare un boxplot() in R.
Utilizzeremo il dataset airquality per introdurre boxplot() in R con ggplot. Questo dataset misura la qualitร dell'aria di New York da maggio a settembre 1973. Il dataset contiene 154 osservazioni. Utilizzeremo le seguenti variabili:
- Ozono: variabile numerica
- Vento: variabile numerica
- Mese: da maggio a settembre. Variabile numerica
Crea Box Terreno
Prima di iniziare a creare il tuo primo boxplot() in R, devi manipolare i dati come segue:
- Passaggio 1: importa i dati
- Passaggio 2: eliminare le variabili non necessarie
- Passaggio 3: convertire il mese a livello di fattore
- Passaggio 4: crea una nuova variabile categoriale dividendo il mese con tre livelli: inizio, metร e fine.
- Passaggio 5: rimuovere le osservazioni mancanti
Tutti questi passaggi vengono eseguiti con dplyr e l'operatore pipeline %>%.
library(dplyr)
library(ggplot2)
# Step 1
data_air <- airquality % > %
#Step 2
select(-c(Solar.R, Temp)) % > %
#Step 3
mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")),
#Step 4
day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))
Una buona pratica รจ verificare la struttura dei dati con la funzione scorce().
glimpse(data_air)
Produzione:
## Observations: 153 ## Variables: 5 ## $ Ozone <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ... ## $ Wind <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6... ## $ Month <ord> May, May, May, May, May, May, May, May, May, May, May,... ## $ Day <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,... ## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...
Ci sono NA nel dataset. ร saggio rimuoverli.
# Step 5 data_air_nona <-data_air %>% na.omit()
Box plot di base
Rappresentiamo graficamente il boxplot() di base di R con la distribuzione dell'ozono per mese.
# Store the graph
box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone))
# Add the geometric object box plot
box_plot +
geom_boxplot()
Spiegazione del codice
- Memorizzare il grafico per un ulteriore utilizzo
- box_plot: Memorizza il grafico nella variabile box_plot. ร utile per un uso futuro o per evitare righe di codice troppo complesse.
- Aggiungere l'oggetto geometrico di R boxplot()
- Si passa il set di dati data_air_nona a ggplot boxplot.
- All'interno dell'argomento aes() aggiungi l'asse x e l'asse y.
- Il segno + significa che vuoi che R continui a leggere il codice. Rende il codice piรน leggibile rompendolo.
- Utilizzare geom_boxplot() per creare un box plot
Produzione:
Cambia lato del grafico
Puoi capovolgere il lato del grafico.
box_plot + geom_boxplot()+ coord_flip()
Spiegazione del codice
- box_plot: Utilizzi il grafico che hai memorizzato. Evita di riscrivere tutti i codici ogni volta che aggiungi nuove informazioni al grafico.
- geom_boxplot(): crea boxplot() in R
- coord_flip(): capovolge il lato del grafico
Produzione:
Cambia il colore del valore anomalo
ร possibile modificare il colore, la forma e la dimensione dei valori anomali.
box_plot +
geom_boxplot(outlier.colour = "red",
outlier.shape = 2,
outlier.size = 3) +
theme_classic()
Spiegazione del codice
- outlier.color="red": controlla il colore dei valori anomali
- outlier.shape=2: modifica la forma dell'outlier. 2 si riferisce al triangolo
- outlier.size=3: modifica la dimensione del triangolo. La dimensione รจ proporzionale al numero.
Produzione:
Aggiungi una statistica riassuntiva
ร possibile aggiungere una statistica riassuntiva al boxplot() di R.
box_plot +
geom_boxplot() +
stat_summary(fun.y = mean,
geom = "point",
size = 3,
color = "steelblue") +
theme_classic()
Spiegazione del codice
- stat_summary() consente di aggiungere un riepilogo al boxplot orizzontale R
- L'argomento fun.y controlla le statistiche restituite. Utilizzerai la media
- Nota: sono disponibili altre statistiche, ad esempio min e max. ร possibile visualizzare piรน statistiche nello stesso grafico
- geom = โpuntoโ: traccia la media con un punto
- size=3: dimensione del punto
- color =โsteelblueโ: Colore dei punti
Produzione:
Box Traccia con punti
Nel boxplot orizzontale successivo R, aggiungi i layer del dot plot. Ogni punto rappresenta un'osservazione.
box_plot +
geom_boxplot() +
geom_dotplot(binaxis = 'y',
dotsize = 1,
stackdir = 'center') +
theme_classic()
Spiegazione del codice
- geom_dotplot() consente di aggiungere punti alla larghezza del contenitore
- binaxis='y': cambia la posizione dei punti lungo l'asse y. Per impostazione predefinita, asse x
- dotsize=1: dimensione dei punti
- stackdir='center': modo di impilare i punti: quattro valori:
- โsuโ (predefinito),
- "giรน"
- "centro"
- โcentrointeroโ
Produzione:
Controllo Estetico del Box Terreno
Cambia il colore della scatola
Puoi cambiare i colori del gruppo.
ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) +
geom_boxplot() +
theme_classic()
Spiegazione del codice
- I colori dei gruppi sono controllati nella mappatura aes(). Puoi usare color= Month per cambiare il colore del box and whisker plot in base ai mesi
Produzione:
Box trama con piรน gruppi
ร anche possibile aggiungere piรน gruppi. ร possibile visualizzare la differenza della qualitร dell'aria in base al giorno della misurazione.
ggplot(data_air_nona, aes(Month, Ozone)) +
geom_boxplot(aes(fill = day_cat)) +
theme_classic()
Spiegazione del codice
- La mappatura aes() dell'oggetto geometrico controlla i gruppi da visualizzare (questa variabile deve essere un fattore)
- aes(fill= day_cat) consente di creare tre caselle per ogni mese sull'asse x
Produzione:
Box Tracciare con punti tremolanti
Un altro modo per mostrare il punto รจ con punti jittered. ร un modo comodo per visualizzare i punti con boxplot per dati categoriali in variabile R.
Questo metodo evita la sovrapposizione dei dati discreti.
box_plot +
geom_boxplot() +
geom_jitter(shape = 15,
color = "steelblue",
position = position_jitter(width = 0.21)) +
theme_classic()
Spiegazione del codice
- geom_jitter() aggiunge un piccolo decadimento a ciascun punto.
- shape=15 cambia la forma dei punti. 15 rappresenta i quadrati
- color = โsteelblueโ: cambia il colore del punto
- position=position_jitter(width = 0.21): modo per posizionare i punti sovrapposti. position_jitter(width = 0.21) significa che sposti i punti del 20% dall'asse x. Per impostazione predefinita, 40%.
Produzione:
Puoi vedere la differenza tra il primo grafico con il metodo jitter e il secondo con il metodo point.
box_plot +
geom_boxplot() +
geom_point(shape = 5,
color = "steelblue") +
theme_classic()
dentellato Box Terreno
Una caratteristica interessante di geom_boxplot() รจ una funzione boxplot a tacche in R. Il grafico a tacche restringe la scatola attorno alla mediana. Lo scopo principale di un grafico a tacche รจ confrontare la significativitร della mediana tra i gruppi. Ci sono forti prove che due gruppi hanno mediane diverse quando le tacche non si sovrappongono. Una tacca viene calcolata come segue:
con รจ l'interquartile e il numero di osservazioni.
box_plot +
geom_boxplot(notch = TRUE) +
theme_classic()
Spiegazione del codice
- geom_boxplot(notch=TRUE): Crea un boxplot orizzontale con tacche R
Produzione:
Sintesi
Possiamo riassumere i diversi tipi di boxplot orizzontale R nella tabella seguente:
| Obiettivo | Code |
|---|---|
| Box plot di base |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() |
| capovolgere il lato |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip() |
| Box plot con tacche |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE) |
| Box trama con punti tremolanti |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21)) |
Controlla anche: - Tutorial R per principianti: impara il linguaggio di programmazione R











