2015-11-13 12 views
7

Ist es möglich, einen Boxplot zu erstellen, der sowohl den Mittelwert als auch den Median als Linie mit der Standard-Boxplot-Funktion von R anzeigt? Meine aktuelle Lösung zeigt den Mittelwert als Quer:Boxplot zeigt den Mittelwert als Linie

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

Image of boxplot

Antwort

9

Aus Gründen der Vollständigkeit, könnten Sie auch 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") 

Erklärung über @scs:

bxp$stats gibt eine Matrix zurück das enthält den unteren Bart, das untere Scharnier, den Median, das obere Scharnier und das Extrem des oberen Bartes für jeden Boxplot. Die obige Lösung überschreibt den in bx.p$stats[3, ] angegebenen Median mit dem Mittelwert. Die Funktion bxp ist eine Funktion zum Zeichnen von Boxplot-Objekten.

Ergebnis:

enter image description here

+0

Vielleicht ist es nur ich, aber ich möchte etwas anderes als nur Farbe, die zwei Dinge auf der gleichen Handlung unterscheiden würde. Stellen Sie sich vor, dass ich aus irgendeinem obskuren Grund das auf Papier lesen wollte und der einzige Drucker, auf dem ich drucken kann, hat nur schwarze Tinte. –

+0

In eine Legende einfügen: 'legende ('topleft', lty = c (1, 1), lwd = rep (3, 2), col = c (" schwarz "," rot "), legende = c (" median "," bedeutet "), horiz = TRUE, bg =" transparent ")'. – lukeA

+0

Mein Drucker verwendet auch schwarze Tinte für die Legende. :-) –

9

Die Standard-Plotten von boxplot macht die Breite der Box gehen von 0.8 zu 1.2 im x-axis.

Sie daher eine Linie für den Mittelwert mit dem Code unten ziehen:

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

enter image description here

+2

Dies löst das eigentliche Problem, aber es ist nicht leicht skalierbar zu Lösungen mit mehreren Boxplots im selben Fenster oder Plots mit benutzerdefinierter Breite/Höhe. Daher wurde die allgemeinere Lösung als akzeptierte Antwort ausgewählt. – scs

Verwandte Themen