################################################ ### Programmieren mit statistischer Software ### ### Graphiken mit ggplot2 ### ################################################ library(ggplot2) ### Beispieldatensatz ### data("iris") data("Titanic") ### Titanic-Datensatz aufbereiten ### freq <- as.vector(Titanic) var <- expand.grid(dimnames(Titanic)) # Gruppierter Datensatz mit Häufigkeiten table_Titanic <- data.frame(var,"Frequency"=freq) # Datensatz mit Einzelbeobachtungen data_Titanic <- data.frame("Class"=rep(var[,1],freq), "Sex"=rep(var[,2],freq), "Age"=rep(var[,3],freq), "Survived"=rep(var[,4],freq)) ### Unterschiedliche Graphiken basierend auf geoms ### ## Balken/Säulendiagramm ggplot(data_Titanic) + aes(x=Class) + geom_bar(stat="count") ggplot(data_Titanic) + aes(x=Sex, fill=Class) + geom_bar(stat="count") # nützliches Argument: position ## Histogramm ggplot(iris) + aes(x=Sepal.Length) + geom_histogram() + xlab("Kelchblattlänge") + ylab("Absolute Häufigkeit") # nützliches Argument: binwidth ## Boxplot ggplot(iris) + aes(x=Species,y=Sepal.Width) + geom_boxplot() # nützliche Argumente: fill, outlier.colour, outlier size # weitere Funktionen: geom_jitter(), coord_flip() ## Streudiagramm ggplot(iris) + aes(x=Sepal.Width, y=Sepal.Length) + geom_point() # nützliche Argumente: alpha, size, colour, shape ## Streudiagrammmatrrix ggplot(iris) + aes(x=Petal.Length, y=Sepal.Length) + geom_point() + facet_grid(Species~.) # weitere Funktion: facet_wrap(), scale_colour_manual() ### Ein paar komplizierte Beispiele ### ggplot(data_Titanic) + aes(x=Sex, fill=Class) + geom_bar(position="dodge", stat="count") + facet_wrap(~Age, nrow=2) + scale_fill_manual(values=c(grey(0.8), grey(0.6), grey(0.4), grey(0.2))) ggplot(iris) + aes(x=Species, y=Sepal.Length, colour=Species) + geom_boxplot() + geom_jitter(position = position_jitter(width = 0.05, height=0), aes(colour=Species)) + coord_flip() ggplot(iris) + aes(x=Petal.Length, y=Sepal.Length, colour=Petal.Width) + geom_point() + scale_colour_gradientn(colours=rainbow(4))+ theme(legend.position="right")