Boxplots mit bxp()
Am Beispiel der folgenden Daten werden die Boxplots mit der Funktion bxp()
[1] auf dieser Seite erzeugt. bxp()
erwartet als Eingabe das Resultat des Befehls boxplot()
. Beide Befehle gehören zum Paket graphics
.
uscrime<-UScrime
data.box<-boxplot( uscrime$Po1, uscrime$Po2, uscrime$Pop, plot=FALSE)
Aussehen der Boxplots
Aussehen der Boxen
Man kann die Linienfarbe, den Linientyp und die Linienstärke der Whiskers (s.Abb.: blau), der Enden der Whiskers (s.Abb.: rot) und der Boxen verändern (s.Abb.: hellblau). Bei den Ausreißern kann man das Symbol, die Symbolfarbe und die Linienstärke und den Typen einer Linie die parallel zu den Enden der Wiskers ist, (s.Abb.: grün). Die Linienstärke, -farbe und den Symboltypen kann man für die Medianlinie wählen (s.Abb.: lila, dunkelrot).
Aussehen der Achsen und Beschriftungen
Man kann die Größe und die Schriftfarbe der Überschrift (s.Abb.: rot), der Bildunterschrift (s.Abb.: blau), der Achsenbeschriftungen (s.Abb.: grün) und der Werte auf den Achsen (s.Abb.: lila) festlegen.
Mit dem Befehl axis()
kann man den Linientyp, die Linienstärke und -farbe der Achsen verändern (s.Abb.: rot).
col.main="red", cex.main=0.9,
col.sub="blue", cex.sub=1,
col.lab="darkgreen", cex.lab=0.9,
col.axis="plum4", cex.axis=2,
pars=list(whisklty=4, whisklwd=2, whiskcol="blue",
staplelty=2, staplelwd=2, staplecol="red",
outlty=0, outlwd=2, outcol="darkgreen", outcex=2, outpch=25, outbg="green",
medlty=1, medlwd=3, medcol="plum4", medcex=2, medpch=21, medbg="darkred",
boxlty=5, boxlwd=2, boxcol="steelblue", boxfill="lightblue"))
axis(side=1, lty=2, lwd=3, col="darkred", col.axis="violetred", font=3, lwd.tick=5, col.ticks="red")
Aussehen der Boxen
Hier einzelne Beispiele zum Ausprobieren.
WhiskersDer Linientyp ist hier 4 (= "dotdash"
), die Linienstärke ist 2 und eingefärbt ist es in "blue"
(blau).
Der Linientyp ist hier 2 (= "dashed"
), die Linienstärke ist 2 und die Farbe ist "red"
(rot).
Der Linientyp ist hier 0 (= "blank"
), die Linienstärke ist 2, die Farbe ist "darkgreen"
(dunkelgrün), die Größe der Punkte ist 2, es wird das Symbol 25 verwendet und die Hintergrundfarbe ist "green"
(grün). Die Symbole 21 bis 25 können zweifarbig dargestellt werden, bei anderen Symbolen hat die Hintergrundfarbe keine Auswirkungen.
Der Linientyp ist hier 1 (= "solid"
), die Linienstärke ist 3, die Linienfarbe ist "plum4"
(lila). Die Symblgröße ist 2, es wird das Symbol 21 verwendet und die Hintergrundfarbe ist "darkred"
(dunkelrot).
Der Linientyp ist hier 5 (= "longdash"
), die Linienstärke ist 2 und die Farbe ist "steelblue"
(hellblau). Für schraffierte Boxen siehe Boxplot mit Schraffur.
Achsen und Beschriftungen
Hier einzelne Beispiele zum Ausprobieren.
ÜberschriftUnterschrift
Achsenbeschriftung
Mit dem Attribut font.axis=3
kann man die Schrift auf italic setzen [2].
axis(side=1, lty=2, lwd=3, col="darkred", col.axis="violetred", font=3, lwd.tick=5, col.ticks="red")
Man kann den Werten der Achsen eine beliebige Farbe geben und ihre Größe bestimmen. Durch xaxt="n"
wird keine x-Achse gezeichnet. Die x-Achse wird mit dem Befehl axis()
erzeugt [3].
Breiten der Boxplots
Breite der BoxDer default-Wert ist boxwex=0.8
.
Der default-Wert ist boxwex=0.5
.
bxp(data.box, pars=list(outwex=0.5, outlty=1))
bxp(data.box, pars=list(outwex=0.2, outlty=1))
bxp(data.box, pars=list(outwex=1, outlty=1))
par(o)
Der default-Wert ist boxwex=0.5
. Standardmäßig wird keine Linie gezeichnet.
Weiteres
bxp(data.box,ylim=c(0,200), at=c(1,2,4), xlim=c(0,5), pars=list(boxwex=0.5))
for(i in c(1,2,4)) lines(c(i-0.5/2,i+0.5/2), c(m[i],m[i]), lwd=2, col="red")
for(i in 1:3) text(ifelse(i==3,i+0.2+1,i+0.2), data.box$stats[,i], data.box$stats[,i], cex=0.8, col="red", pos=4)
for(i in c(1,2,4)) text(ifelse(i==3,i+0.2+1,i+0.2), m[i], m[i], cex=0.8, col="red", pos=4)
Wertebereich der Achsen
bxp(data.box, ylim=c(0,200), xlim=c(0,4))
bxp(data.box, ylim=c(0,150), xlim=c(1,3))
par(o)
Abstände zwischen den Boxplots
Zusätzliche Mittelwertlinie
boxwex<-0.8
bxp(data.box)
for(i in 1:3) lines(c(i-boxwex/2,i+boxwex/2), c(m[i],m[i]), lwd=2, col="red")
Werte neben dem Boxplot
for(i in 1:3) text(i+0.2, data.box$stats[,i], data.box$stats[,i], cex=0.8, col="red", pos=4)
Boxplot mit Schraffur
Mit der folgenden Funktion boxplot.hatching()
kann man schraffierte Boxplots erzeugen (frei nach [5]). Sehr nützlich für Grafiken in schwarzweiß.
box<-boxplot(data, plot=FALSE, names=names)
if(length(lwd) < ncol(box$stats)) { lwd<-rep(lwd, ncol(box$stats)) }
if(length(lty) < ncol(box$stats)) { lty<-rep(lty, ncol(box$stats)) }
plot.new()
plot.window(xlim=c(1-boxwex/2, ncol(box$stats)+boxwex/2), ylim=c(min(box$stats[1, ]), max(box$stats[5, ])))
for(i in 1:ncol(box$stats)) {
rect(i-boxwex/2, box$stats[2, i], i+boxwex/2, box$stats[4, i], border=FALSE, density=density[i], col=col.hatching[i], angle=angle[i], lwd=lwd[i], lty=lty[i], lend=1)
rect(i-boxwex/2, box$stats[2, i], i+boxwex/2, box$stats[4, i], border="white", lwd=lwd[i], lty=1)
}
bxp(box, width=rep(1, ncol(box$stats)), pars=list(boxwex=boxwex, boxcol=col, medcol=col, whiskcol=col, staplecol=col, outcol=col), add=TRUE, ...)
}
boxplot.hatching(data.frame(1:10, 1:20), angle=c(45, 0), lwd=c(1, 3), lty=c(1, 3), col.hatching=c("blue", "red"), names=c("A", "B"))
Quellen: | |
[1] | Draw Box Plots from Summaries R: help(bxp) bzw. ?bxp |
[2] | Set or Query Graphical Parameters R: help(par) bzw. ?par |
[3] | Add an Axis to a Plot R: help(axis) bzw. ?axis |
[4] | Add Text to a Plot R: help(text) bzw. ?text |
[5] | Patterning inside the boxplots in R http://www.vpihur.com/blog/?p=319 |
26.9.2010 (R: 2.10.0-2.11.1)