Crea boxplot affiancati in R
-
Usa la funzione
par
per creare boxplot affiancati in R -
Usa la funzione
grid.arrange
per creare boxplot affiancati in R
Questo articolo introdurrà i metodi per creare boxplot affiancati in R.
Usa la funzione par
per creare boxplot affiancati in R
La funzione par
può essere utilizzata per impostare i parametri grafici. Chiamando la funzione senza argomenti o no.readonly = TRUE
si recuperano tutti i parametri grafici. In questo caso, utilizziamo il parametro mfrow
per costruire boxplot affiancati. mfrow
viene passato nel vettore c(nr, nc)
e i grafici successivi vengono disegnati come array nr
-by-nc
. Il codice di esempio seguente costruisce due boxplot dal set di dati InsectSprays
, dove le colonne count
e spray
sono tracciate di conseguenza. Anche se una revisione approfondita della funzione boxplot
va oltre lo scopo di questo articolo, è necessario l’argomento col
per specificare il colore dei corpi dei riquadri. Si noti che l’ultima chiamata alla funzione par(mfrow=c(1,1))
viene utilizzata per ripristinare il layout all’impostazione predefinita.
par(mfrow=c(1,2))
boxplot(count ~ spray, data = InsectSprays, col = "pink")
boxplot(count ~ spray, data = InsectSprays, col = "yellow")
par(mfrow=c(1,1))
Usa la funzione grid.arrange
per creare boxplot affiancati in R
In alternativa, possiamo usare la funzione grid.arrange
dal pacchetto gridExtra
. grid.arrange
si comporta in modo simile alla funzione par
. Tuttavia, è più flessibile e intuitivo con più grafici, in particolare gli oggetti ggplot
. grid.arrange
prende una lunghezza variabile di oggetti ggplot
come argomenti iniziali. Successivamente, possiamo specificare argomenti opzionali, vale a dire il parametro ncol
che indica il numero di colonne che devono essere create per i grafici. Il prossimo frammento di codice disegna due boxplot affiancati.
library(ggplot2)
library(gridExtra)
plot1 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "pink")
plot2 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "yellow")
grid.arrange(plot1, plot2, ncol = 2)
grid.arrange
può anche creare finestre divise bidimensionali specificate utilizzando entrambi i parametri nrow
e ncol
. Nota che gli oggetti ggplot
possono essere combinati in una lista e passati sotto forma di argomento grobs = list(...)
. L’esempio seguente restituisce quattro grafici a scatole in uno stile matrice due per due.
library(ggplot2)
library(gridExtra)
plot1 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "pink")
plot2 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "yellow")
plot3 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "orange")
plot4 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "cyan")
grid.arrange(plot1, plot2, plot3, plot4, nrow = 2, ncol = 2)
Un altro parametro utile per la funzione grid.arrange
è layout_matrix
, che posiziona ogni grafico in una struttura personalizzata specificata con vettori combinati. L’esempio definisce tre diversi oggetti del grafico costruiti in una struttura di finestra asimmetrica: due grafici in alto e uno in basso. Il numero di vettori in bind
corrisponde alle righe della finestra e gli elementi in ciascun oggetto specificano il numero di parti in cui deve essere suddivisa la riga della finestra data. Nel frattempo, i numeri corrispondono ai grafici degli argomenti nello stesso ordine. Se tutte le finestre divise sulla seconda riga devono essere occupate dal terzo grafico, allora tutti gli elementi nel secondo vettore dovrebbero avere un valore - 3
.
library(ggplot2)
library(gridExtra)
plot1 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "pink")
plot2 <- ggplot(mtcars, aes(x = mpg)) + geom_histogram(fill = "yellow", bins = 30)
plot3 <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point(fill = "orange")
grid.arrange(plot1, plot2, plot3, widths = c(2, 2, 1),
layout_matrix = rbind(c(1, 2, 2), c(3, 3, 3)))
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook