Barplot

Barplots mit barplot()

Am Beispiel der nachstehenden Daten werden die Barplots dieser Seite mit der Funktion barplot() [1] aus dem Paket graphics erzeugt.

x<-cbind(30:40, 10:20, 50:40, 60:50)

Grundsätzlich kann man die Göße und die Schriftfarbe der Überschrift, der Bildunterschrift, der Achsenbeschriftungen und der Werte auf den Achsen festlegen. Mit dem Befehl barplot() kann man die Füllung, die Farbe und die Breite der Balken bzw. Säulen, die Farbe der Ränder und die Breite der Zwischenräume festlegen.

Kleines Beispiel:
In dem Beispiel sind die Säulen in unterschiedlichen Farben schraffiert. Die Farbpalette rainbow() [2] wurde für die Farbe (Attribut col) der Säulen, Ränder und Beschirftung verwendet. Die Dichte der Schraffur gibt man mit dem Attribut density und den Winkel mit angle an. Hier nimmt mit jeder Säule die Dichte zu (Linien pro Inch) und der Winkel verändert sich auch. Standardmäßig kann man mit barplot() nur einfache parallele Schraffuren erzeugen. Im Beispiel wurde der Barplot zwei Mal übereinander gezeichnet, um so eine Kreuzschraffur zu erzeugen. Dafür wurden im zweiten Barplot alle Beschriftungen entfernt und das Zeichnen der y-Achse abgestellt (yaxt="n"). Durch das add=TRUE wird der zweite Barplot über den ersten gezeichnet.
Die Beschriftungen unterhalb der Säulen wurden mit text() erzeugt. Da die Buchstaben A bis K nicht im eigentlichen Plotbereich sondern außerhalb im Randbereich liegen, muss man hier xpd=TRUE setzen. Mit srt kann man den Winkel der Beschriftungen verändern, dieses Attribut ist aus par() [3] (wird allerdings nur von text() unterstüzt). Die Breite der Säulen kann man mit width (default-Wert: 1) angeben und die Breite der Zwischenräume mit space. Der Zwischenraum ist bei der Einstellung beside=TRUE standardmäßig 0.2 und ist links vor jeder Säule. Mit diesen Informationen wurden die Buchstaben A bis K mittig unterhalb die Säulen gesetzt.

Abb.: Beispiel Barplot

R-Code der obigen Abbildung:
barplot(x[,1], main="Barplot", sub="sub", xlab="x-Achse", ylab="y-Achse", ylim=c(0,45), yaxp=c(0,45,5), las=1, beside=TRUE, col=rainbow(11), border=rainbow(11)[11:1], density=seq(10,40,length.out=11), angle=seq(10,40,length.out=11)) barplot(x[,1], yaxt="n", beside=TRUE, col=rainbow(11), border=rainbow(11)[11:1], density=seq(10,40,length.out=11), angle=seq(120,160,length.out=11), add=TRUE) text(seq(0.2+0.5,1.2*11-0.5,length.out=11), -6, labels=LETTERS[1:11], col=rainbow(11)[11:1], font=2, srt=45, xpd=TRUE)

Ausmaße der Barplots

Gestapelt oder nebeneinander
Bei TRUE werden die Werte einer Gruppe nebeneinander dargestellt und mit FALSE (default) werden die Werte einer Gruppe gestapelt.

barplot(x, beside=TRUE)

Balken oder Säulen
Mit horiz=TRUE erhält man Balken. Standardeinstellung ist horiz=FALSE und erzeugt ein Säulendiagramm.

barplot(x, horiz=TRUE)

Unterschiedliche Breiten
Die Breit der Balken/Säulen kann man mit width angeben.

barplot(x[1:10], width=10:1*0.5, beside=TRUE)

Unterschiedliche breite Lücken
Die Breite der Zwischenräume kann man mit space (default: 0.2) bestimmen. Der Zwischenraum ist links vor den Säulen positioniert.

barplot(x[1:10], space=c(0,1,0,0,0,1,2,1,0,0), beside=TRUE)

Bei Gruppen von Daten (Matrizen) und beside=TRUE kann man den Abstand innerhalb einer Gruppe und zwischen den Gruppen festlegen. Standardmäßig ist space=c(0,1).

barplot(x, space=c(0.2,1), beside=TRUE)

Farbe oder Schraffur

In Farbe
Man kann jeder Säule eine eigene Farbe geben (siehe Beispiel), allen Säulen die gleiche oder immer abwechselnd z.B. mit col=c("red","blue").

barplot(x, col=rainbow(10))

Farbig ohne Rand
Das Zeichnen der Ränder kann mit border=FALSE abgestellt werden.

barplot(x, beside=TRUE, col=rainbow(10), border=FALSE)

Mit Schraffur
Mit density kann man die Dichte der Linien pro Inch der Schraffur angeben. Mit angle (default: 45) wird der Winkel der Schraffur bestimmt.

barplot(x[1:10], beside=TRUE, density=30, col=rainbow(10), angle=125)

Für Schraffuren in unterschiedlichen Winkeln kann man einen Vektor bei angle angeben.

barplot(x[1:10], beside=TRUE, density=30, col="red", angle=c(125,45))

Schraffur und farbiger Rand
Mit border kann man die Randfarbe festlegen.

barplot(x[1:10], beside=TRUE, density=30, col=rainbow(10), angle=125, border=rainbow(10))

Beschriftungen

Text über den Säulen

p<-barplot(x[1:10], beside=TRUE, col=rainbow(10))
text(p, x[1:10]+1, 1:10, xpd=TRUE)

Text neben den Balken

p<-barplot(x[1:10], horiz=TRUE, beside=TRUE, col=rainbow(10))
text(x[1:10]+2, p, 1:10, xpd=TRUE)

zurück


Quellen:
[1] Bar Plots
R: help(barplot) bzw. ?barplot
[2] Color Palettes
R: help(rainbow) bzw. ?rainbow
[3] Set or Query Graphical Parameters
R: help(par) bzw. ?par

16.02.2010 (R: 2.10.1)