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)
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()
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 )
Liebe Rchäologen,
leider funktioniert der link auf die Übungsdaten nicht.
MfG
Anne Klammt
Archäologisches Institut
Universität Göttingen
Hallo Anne!
Vielen Dank für den Hinweis. Das Problem ist behoben.
Mit der Bitte um Nachsicht, viel Erfolg beim “Nachkochen”, Jörg