bar-graphs-grouped

index

R Säulendiagramme

# gruppierte Säulendiagramme - barplots

# Gruppierte Balken durch eingestreute fehlende Werte
barplot(c(15,20,NA,10,30,NA,17,50))

use-missing


# 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)

first-try


# 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
)

beschriftung


# 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)

errorbars


# Ü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)

overlap


# Ü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)

tick orientation


# Ü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

tick orientation base


use-missing

first-try

beschriftung

errorbars

overlap

tick orientation

tick orientation base