R Säulendiagramme
# gruppierte Säulendiagramme - barplots
# Gruppierte Balken durch eingestreute fehlende Werte
barplot(c(15,20,NA,10,30,NA,17,50))

# Gruppierung besser mit Matrix als Input
# beside=T bewirkt, daß die Einzelwerte einer Gruppe als einzelne Säule der Gruppe auftauchen
# jede Spalte der Datenmatrix ist eine Säulengruppe
dd <- cbind(c(100,110,90,105,95),c(120,110,105,100,115))
barplot(dd, beside=T)

# Bars oder Bar-Gruppen beschriften
dd <- cbind(c(100,110,90,105,95),c(120,110,105,100,115))
barplot(dd,
beside=T, # Säulen nebeneinander setzen
names.arg=c('erster Zeitp','zweiter Zeitp.'), # Säulengruppen beschriften
col=c('white','green','red','green','white'), # Farben festlegen, wird für Gesamtzahl der Säulen wiederholt
ylim=c(80,120), # Y-Achsenausdehnung festlegen
xpd=FALSE # nicht über Achsen wegzeichnen
)

# Streuungsinformationen hinzufügen zu Barplots
# Prinzip: Pfeile hinzufügen mit 90-Grad Spitze
mw <- cbind(c(100,110),c(120,125))
se <- cbind(c(5,7),c(6,4))
xx <- barplot(mw,
beside=T, # Sääulen werden nebeneinander gezeichnet
ylim=c(80,140),
col=c('white','grey'), # die Farbenfolge wiederholt sich für die zweite Säulengruppe
xpd=F # xpd=F verhindert, daß Säulen unter die x-Achse 'sinken'
)
arrows(xx[1,1],mw[1,1],xx[1,1],mw[1,1] + se[1,1], angle=90, length=0.1)
arrows(xx[1,1],mw[1,1],xx[1,1],mw[1,1] - se[1,1], angle=90, length=0.1)
arrows(xx[2,1],mw[2,1],xx[2,1],mw[2,1] + se[2,1], angle=90, length=0.1)
arrows(xx[2,1],mw[2,1],xx[2,1],mw[2,1] - se[2,1], angle=90, length=0.1)
arrows(xx[1,2],mw[1,2],xx[1,2],mw[1,2] + se[1,2], angle=90, length=0.1)
arrows(xx[1,2],mw[1,2],xx[1,2],mw[1,2] - se[1,2], angle=90, length=0.1)
arrows(xx[2,2],mw[2,2],xx[2,2],mw[2,2] + se[2,2], angle=90, length=0.1)
arrows(xx[2,2],mw[2,2],xx[2,2],mw[2,2] - se[2,2], angle=90, length=0.1)

# Überlappende Balken
mw <- cbind(c(100,110),c(120,115))
se <- cbind(c(5,7),c(6,4))
xx <- barplot(mw,
beside=T,
space=c(-0.2,1), # -0.2 ist Überlappungsgrad, 1 ist Distanz zwischen Säulengruppen
ylim=c(80,140),
col=c('white','grey'),
xpd=F # xpd=F verhindert, daß Säulen unter die x-Achse 'sinken'
)
arrows(xx[1,1],mw[1,1],xx[1,1],mw[1,1] + se[1,1], angle=90, length=0.1)
arrows(xx[1,1],mw[1,1],xx[1,1],mw[1,1] - se[1,1], angle=90, length=0.1)
arrows(xx[2,1],mw[2,1],xx[2,1],mw[2,1] + se[2,1], angle=90, length=0.1)
arrows(xx[2,1],mw[2,1],xx[2,1],mw[2,1] - se[2,1], angle=90, length=0.1)
arrows(xx[1,2],mw[1,2],xx[1,2],mw[1,2] + se[1,2], angle=90, length=0.1)
arrows(xx[1,2],mw[1,2],xx[1,2],mw[1,2] - se[1,2], angle=90, length=0.1)
arrows(xx[2,2],mw[2,2],xx[2,2],mw[2,2] + se[2,2], angle=90, length=0.1)
arrows(xx[2,2],mw[2,2],xx[2,2],mw[2,2] - se[2,2], angle=90, length=0.1)

# Überlappende Balken senkrechte Beschriftung der Balken
mw <- cbind(c(100,110),c(120,115))
se <- cbind(c(5,7),c(6,4))
xx <- barplot(mw,
beside=T, # Balken werden nebeneinander geplottet
space=c(-0.2,1), # -0.2 ist Überlappungsgrad, 1 ist Distanz zwischen Säulengruppen
ylim=c(80,140), # Range der y-Achse festlegen
col=c('white','grey'), # Balkenfarben festlegen
las=2, # die Beschriftung ist bei x-Achse senkrecht (Werte zwischen 0 und 3, auch Y-Achse ist betroffen)
names.arg=c('Pre','Post'), # das steht unter den zwei Balkengruppen
xpd=F # xpd=F verhindert, daß Säulen unter die x-Achse 'sinken'
)
arrows(xx[1,1],mw[1,1],xx[1,1],mw[1,1] + se[1,1], angle=90, length=0.1)
arrows(xx[1,1],mw[1,1],xx[1,1],mw[1,1] - se[1,1], angle=90, length=0.1)
arrows(xx[2,1],mw[2,1],xx[2,1],mw[2,1] + se[2,1], angle=90, length=0.1)
arrows(xx[2,1],mw[2,1],xx[2,1],mw[2,1] - se[2,1], angle=90, length=0.1)
arrows(xx[1,2],mw[1,2],xx[1,2],mw[1,2] + se[1,2], angle=90, length=0.1)
arrows(xx[1,2],mw[1,2],xx[1,2],mw[1,2] - se[1,2], angle=90, length=0.1)
arrows(xx[2,2],mw[2,2],xx[2,2],mw[2,2] + se[2,2], angle=90, length=0.1)
arrows(xx[2,2],mw[2,2],xx[2,2],mw[2,2] - se[2,2], angle=90, length=0.1)

# Überlappende Balken senkrechte Beschriftung der Balken
mw <- cbind(c(100,110),c(120,115))
se <- cbind(c(5,7),c(6,4))
xx <- barplot(mw,
beside=T, # Balken werden nebeneinander geplottet
space=c(-0.2,1), # -0.2 ist Überlappungsgrad, 1 ist Distanz zwischen Säulengruppen
ylim=c(80,140), # Range der y-Achse festlegen
xlim=c(0,6),
col=c('white','grey'), # Balkenfarben festlegen
las=2, # die Beschriftung ist bei x-Achse senkrecht (Werte zwischen 0 und 3, auch Y-Achse ist betroffen)
names.arg=c('Pre','Post'), # das steht unter den zwei Balkengruppen
xpd=F, # xpd=F verhindert, daß Säulen unter die x-Achse 'sinken'
axis.lty=1 # fügt eine Linie unter den Balken ein
)
arrows(xx[1,1],mw[1,1],xx[1,1],mw[1,1] + se[1,1], angle=90, length=0.1)
arrows(xx[1,1],mw[1,1],xx[1,1],mw[1,1] - se[1,1], angle=90, length=0.1)
arrows(xx[2,1],mw[2,1],xx[2,1],mw[2,1] + se[2,1], angle=90, length=0.1)
arrows(xx[2,1],mw[2,1],xx[2,1],mw[2,1] - se[2,1], angle=90, length=0.1)
arrows(xx[1,2],mw[1,2],xx[1,2],mw[1,2] + se[1,2], angle=90, length=0.1)
arrows(xx[1,2],mw[1,2],xx[1,2],mw[1,2] - se[1,2], angle=90, length=0.1)
arrows(xx[2,2],mw[2,2],xx[2,2],mw[2,2] + se[2,2], angle=90, length=0.1)
arrows(xx[2,2],mw[2,2],xx[2,2],mw[2,2] - se[2,2], angle=90, length=0.1)
lines(c(-0.5,5.6), c(80,80)) # zieht die X-Achse wenn ylim[1] nicht 0 ist und die Balken unten offen sind
