Grafiken mit ggplot2
Das ggplot2</a > Paket, das von Hadley Wickham entwickelt wurde, bietet eine leistungsstarke Grafiksprache zur Erstellung eleganter und komplexer Diagramme. Seine Popularität in der R-Community ist in den letzten Jahren explodiert. Ursprünglich basiert ggplot2 auf Leland Wilkinsons The Grammar of Graphics</a > und ermöglicht es dir, Diagramme zu erstellen, die sowohl univariate als auch multivariate numerische und kategoriale Daten auf unkomplizierte Weise darstellen. Die Gruppierung kann durch Farbe, Symbol, Größe und Transparenz dargestellt werden. Die Erstellung von Spalierparzellen (d. h. die Konditionierung) ist relativ einfach.
Die Beherrschung der ggplot2-Sprache kann eine Herausforderung sein (hilfreiche Ressourcen findest du weiter unten im Abschnitt " Weiter" ). Es gibt eine Hilfsfunktion namens qplot() (für quick plot), die einen Großteil dieser Komplexität bei der Erstellung von Standarddiagrammen ausblenden kann.
qplot()
Mit der Funktion qplot() kannst du die gängigsten Diagrammtypen erstellen. Auch wenn ggplot damit nicht seine volle Leistungsfähigkeit entfaltet, kann es eine Vielzahl nützlicher Diagramme erstellen. Das Format ist:
qplot(x, y, data=, color=, shape=, size=, alpha=, geom=, method=,
formula=, facets=, xlim=, ylim= xlab=, ylab=, main=, sub=)
wo die Optionen sind:
option | Beschreibung |
alpha | Alpha-Transparenz für überlappende Elemente, ausgedrückt als Bruchteil zwischen 0 (vollständige Transparenz) und 1 (vollständige Deckkraft) |
Farbe, Form, Größe, Füllung | Verknüpft die Ebenen der Variablen mit der Farbe, Form oder Größe des Symbols. Bei Liniendiagrammen assoziiert die Farbe die Stufen einer Variable mit der Linienfarbe. Bei Dichte- und Boxplots assoziierst du die Füllfarben mit einer Variablen. Legenden werden automatisch gezeichnet. |
Daten | Gibt einen Datenrahmen an |
Facetten | Erzeugt einen Trellis-Graphen, indem er konditionierende Variablen angibt. Sein Wert wird als rowvar ~ colvar ausgedrückt. Um Gitternetzdiagramme zu erstellen, die auf einer einzigen konditionierenden Variable basieren, verwendest du rowvar</em |
geom | Gibt die geometrischen Objekte an, die den Diagrammtyp definieren. Die Option geom wird als Zeichenvektor mit einem oder mehreren Einträgen ausgedrückt. Zu den geom-Werten gehören "point", "smooth", "boxplot", "line", "histogram", "density", "bar" und "jitter". |
Haupt, Unter | Zeichenvektoren, die den Titel und den Untertitel angeben |
Methode, Formel | Wenn geom="smooth" ist, werden standardmäßig eine Löß-Fit-Linie und Konfidenzgrenzen hinzugefügt. Wenn die Anzahl der Beobachtungen größer als 1.000 ist, wird ein effizienterer Glättungsalgorithmus verwendet. Zu den Methoden gehören "lm" für Regression, "gam" für generalisierte additive Modelle und "rlm" für robuste Regression. Der Formelparameter gibt die Form der Anpassung an. Um zum Beispiel einfache lineare Regressionslinien hinzuzufügen, gibst du geom="smooth", method="lm", formula=y |
x, y | Legt die Variablen fest, die auf der horizontalen und vertikalen Achse platziert werden. Bei univariaten Diagrammen (z. B. Histogrammen) lässt du y weg. |
xlab, ylab | Zeichenvektoren, die horizontale und vertikale Achsenbeschriftungen angeben |
xlim,ylim | Numerische Vektoren mit zwei Elementen, die die Mindest- und Höchstwerte für die horizontale bzw. vertikale Achse angeben |
Anmerkungen:
- Zurzeit kann ggplot2 nicht verwendet werden, um 3D-Diagramme oder Mosaikdiagramme zu erstellen.
- Verwende I(Wert), um einen bestimmten Wert anzugeben. Mit size=z wird zum Beispiel die Größe der gezeichneten Punkte oder Linien proportional zu den Werten einer Variablen z festgelegt. Im Gegensatz dazu setzt size=I(3) jeden Punkt oder jede Linie auf das Dreifache der Standardgröße.
Hier sind einige Beispiele mit Fahrzeugdaten (Kilometerstand, Gewicht, Anzahl der Gänge, Anzahl der Zylinder usw.) aus dem mtcars-Datenrahmen.
# ggplot2 examples
library(ggplot2)
# create factors with value labels
mtcars$gear <- factor(mtcars$gear,levels=c(3,4,5),
labels=c("3gears","4gears","5gears"))
mtcars$am <- factor(mtcars$am,levels=c(0,1),
labels=c("Automatic","Manual"))
mtcars$cyl <- factor(mtcars$cyl,levels=c(4,6,8),
labels=c("4cyl","6cyl","8cyl"))
# Kernel density plots for mpg
# grouped by number of gears (indicated by color)
qplot(mpg, data=mtcars, geom="density", fill=gear, alpha=I(.5),
main="Distribution of Gas Milage", xlab="Miles Per Gallon",
ylab="Density")
# Scatterplot of mpg vs. hp for each combination of gears and cylinders
# in each facet, transmittion type is represented by shape and color
qplot(hp, mpg, data=mtcars, shape=am, color=am,
facets=gear~cyl, size=I(3),
xlab="Horsepower", ylab="Miles per Gallon")
# Separate regressions of mpg on weight for each number of cylinders
qplot(wt, mpg, data=mtcars, geom=c("point", "smooth"),
method="lm", formula=y~x, color=cyl,
main="Regression of MPG on Weight",
xlab="Weight", ylab="Miles per Gallon")
# Boxplots of mpg by number of gears
# observations (points) are overlayed and jittered
qplot(gear, mpg, data=mtcars, geom=c("boxplot", "jitter"),
fill=gear, main="Mileage by Gear Number",
xlab="", ylab="Miles per Gallon")
Anpassen von ggplot2-Grafiken
Im Gegensatz zu den Basisgraphen von R werden die Graphen von ggplot2 von vielen der Optionen, die in der Funktion par( ) gesetzt werden, nicht beeinflusst. Sie können mit der Funktion theme() und durch Hinzufügen von Grafikparametern in der Funktion qplot() geändert werden. Für mehr Kontrolle kannst du ggplot() und andere Funktionen des Pakets verwenden. Beachte, dass ggplot2-Funktionen mit "+"-Zeichen verkettet werden können, um den endgültigen Plot zu erzeugen.
library(ggplot2)
p <- qplot(hp, mpg, data=mtcars, shape=am, color=am,
facets=gear~cyl, main="Scatterplots of MPG vs. Horsepower",
xlab="Horsepower", ylab="Miles per Gallon")
# White background and black grid lines
p + theme_bw()
# Large brown bold italics labels
# and legend placed at top of plot
p + theme(axis.title=element_text(face="bold.italic",
size="12", color="brown"), legend.position="top")
Weiter gehen
Wir haben hier nur an der Oberfläche gekratzt. Weitere Informationen findest du in diesem praktischen ggplot-Spickzettel</a> und in Winston Changs hervorragendem Cookbook for R. ggplot2 ist zwar nicht mehr ganz aktuell, aber es gibt noch mehr: Elegant Graphics for Data Anaysis</a > ist immer noch das maßgebliche Buch zu diesem Thema.
Zum Üben
Teste das kostenlose erste Kapitel dieses interaktiven Tutorials zu ggplot2.</a >