Graphische Darstellung – mein erstes R-Diagramm

Dieser Eintrag wird kurz. Versprochen! R ist eine sogenannte objektorientierte Sprache, das heißt in etwa, daß alles, was zum Programm gehört, also Daten, Befehle, Funktionen… als individuelle Objekte – und zwar mit Eigenschaften – behandelt werden. Die Eigenschaften helfen einerseits dem deus in machina die Objekte einzuordnen und somit schneller zu rechnen, andererseits können wir Konsumenten es uns bequem machen und sehr viel mit nur einer einzigen Anweisung erreichen. Das Zauberwort heißt plot.

Egal ob es sich bei um ein einfaches Streudiagramm oder die komplexe Ausgabe einer PCA handelt mit plot(x) wird unser Ergebnisobjekt x graphisch dargestellt.

Dazu ein Beispiel von einem Gräberfeld. Probiere es am besten selbst! Du findest die Daten hier.

gräber<-read.delim2("clipboard",dec=",",header=TRUE,row.names="Grab")
str(gräber) # Mhm, erstmal nachschauen...

(Kurze Anleitung zum Umgang mit den Beispieldatensätzen)

plot eines ganzen Dataframe

plot eines ganzen Dataframe

Wir haben unsere Daten im Dataframe gräber gespeichert und probieren zunächst:

plot(gräber)

Jetzt sehen wir einen sogenannten pairs-plot. Jede Variable wird gegen jede andere dargestellt, die Variablennamen (“Alter”, “Länge” usw.) stehen in den diagonalen Kästchen, die Achseneinteilung steht am Rand. Das gesamte Diagramm ist wie ein Schachbrett zu lesen, so findest Du das Streudiagramm “Tiefe” gegen “Länge” im vierten Kästchen der zweiten Zeile.

R hat also den Dataframe erkannt, und die “sinnvollste” Darstellung für plot() ausgewählt. Bei größeren Variablen-/Spaltenanzahlen wird das schnell unübersichtlich, außerdem ist nicht jedes der dargestellten Streudiagramme für eine Auswertung sinnvoll. Und überhaupt wollen wir es noch ein bißchen schicker, stimmt´s? Schauen wir uns das Diagramm Grablänge gegen -breite einmal genauer an:

plot(gräber$Länge,gräber$Breite)     # Auf Groß- und Kleinschreibung achten!

Schon besser: Ein Detaildiagramm, das uns über die Abhängigkeit zwischen den Grabflächenmaßen aufklärt! Jetzt interessiert uns aber auch noch das Alter der Bestatteten; dazu ein bißchen mehr Code und eine weitere Funktion:

plot(gräber$Länge,gräber$Breite, type="n")             # type="n" bewirkt, daß die Punkte nicht dargestellt werden, denn...
text(gräber$Länge,gräber$Breite, label=gräber$Alter)   # wir nutzen die Einträge in "Alter" als Punktsymbol!

Am gefälligsten sieht das Ganze aber in BUNT aus. Dazu lassen wir die Einträge in “Alter” als Zahlenwerte codieren, die vom Programm in Farbwerte umgesetzt werden können:

text(gräber$Länge,gräber$Breite, label=gräber$Alter,col=as.numeric(gräber$Alter))   # col funktioniert auch in plot()
Fertig! Komplett mit Titel, Achsenbeschriftung, Grabnummern - und hübsch bunt

Fertig! Komplett mit Titel, Achsenbeschriftung, Grabnummern - und hübsch bunt

Und noch ein bißchen Kosmetik: Achsenbeschriftung, Überschrift, Legende und Grabnummern:

# Diagramm
plot(gräber$Länge,gräber$Breite,
  main="Grabmasse", # Überschrift
  sub="Die Flächenmasse der Gräber", # Beschriftung
  cex.sub=0.75,                      # kleinere Beschriftung
  xlab="Länge in cm",
  ylab="Breite in cm",
  pch=as.numeric(gräber$Alter)+15,   # "+15" wählt gefüllte Symbole
  col=as.numeric(gräber$Alter)
)
# Legende
legend("bottomright",
  legend=c("Erwachsene","Jugendliche","Kinder"),
  pch=as.numeric(gräber$Alter)+15,
  col=as.numeric(gräber$Alter)
)
# Punktbeschriftung
text(gräber$Länge,gräber$Breite,
  labels=rownames(gräber),
  pos=1,     # lässt die Labels unter dem Symbol erscheinen (2=links, 3=darüber, 4=rechts)
  cex=0.5    # bestimmt die Größe, Werte <1 verkleinern, >1 vergrößern
)

2 Kommentare

  1. Anne Klammt sagt:

    Liebe Rchäologen,

    leider funktioniert der link auf die Übungsdaten nicht.

    MfG
    Anne Klammt

    Archäologisches Institut
    Universität Göttingen

Diesen Artikel kommentieren

You must be logged in to post a comment.