2015-11-13 17 views
7

È possibile creare un boxplot che mostri sia la media che la mediana come una linea con la funzione standard di boxplot di R? La mia soluzione attuale mostra la media come un incrocio:Grafico della casella che mostra la media come linea

set.seed(1234) 
values <- runif(10,0,1) 
boxplot(values) 
points(mean(values),col="red",pch=4,lwd = 4) 

Image of boxplot

risposta

9

Per ragioni di completezza, si potrebbe anche overplot:

set.seed(753) 
df <- data.frame(y=rt(100, 4), x=gl(5, 20)) 
bx.p <- boxplot(y~x, df) 
bx.p$stats[3, ] <- unclass(with(df, by(y, x, FUN = mean))) 
bxp(bx.p, add=T, boxfill="transparent", medcol="red", axes=F, outpch = NA, outlty="blank", boxlty="blank", whisklty="blank", staplelty="blank") 

Spiegazione via @scs:

bxp$stats restituisce una matrice che contiene il baffo più basso, la cerniera inferiore, la mediana, la cerniera superiore e l'estremo del baffo superiore per ciascun diagramma. La soluzione sopra sostituisce la mediana specificata in bx.p$stats[3, ] con il valore medio. La funzione bxp è una funzione per tracciare oggetti boxplot.

Risultato:

enter image description here

+0

Forse sono solo io, ma mi piace avere qualche indicazione oltre al solo colore che distingua due cose sulla stessa trama. Immagina che per qualche oscuro motivo volessi leggerlo su carta reale e l'unica stampante su cui posso stampare ha solo inchiostro nero. –

+0

Inserisci una legenda: 'legenda ('topleft', lty = c (1, 1), lwd = rep (3, 2), col = c (" nero "," rosso "), legend = c (" mediana "," mean "), horiz = TRUE, bg =" transparent ")'. – lukeA

+0

Anche la mia stampante utilizza inchiostro nero per la legenda. :-) –

9

Il tracciato predefinito boxplot fa la larghezza della casella di passare da 0.8 al 1.2 nel x-axis.

Si può quindi tracciare una linea per la media con il codice qui sotto:

lines(c(0.8, 1.2), rep(mean(values), 2), col="red", lwd = 2) 

enter image description here

+2

Questo risolve il problema reale, ma non è facilmente scalabile per soluzioni con più grafici a scatole nella stessa finestra o intrecci con personalizzato larghezza/altezza. Pertanto, la soluzione più generica di seguito è stata selezionata come risposta accettata. – scs