ggplot2, Variablennamen in einer Schlaufe

Sieht so aus, als ob ich nicht der einzige gewesen bin, der versucht hat, in R mit ggplot2 mehrere Variablen eines Data Frames einzeln nacheinander in einer Schleife z.B. in Histogramme zu plotten. Irgendwie wollte ggplot da nicht die Variablennamen annehmen, sondern ich musste einen kleinen Umweg gehen. Letzten Endes hat http://dodata.wordpress.com/2012/10/25/ggplot2-in-loops-and-multiple-plots/ geholfen.

Mit dem untenstehenden Beispiel gibt’s neun bestimmte Variablen eines Data Frames in einem png-Bild in 3×3-Aufteilung inklusive Extra-Titel obendrüber. Nach der Lösung hab ich schon eine Weile gesucht. Es ist allerdings kein commented, minimal, self-contained, reproducible code, den es sonst auf den R-Mailing-Listen erfordert, um keine dämlichen Antworten zu kriegen 🙂


vars <- names(dframe)[c(4,5,6,8,9,12,13,14,50)
dfplot <- dframe
plotlist <- list()
png(filename=paste(plotdirprefix,"015-histogramme-rpm", ".png", sep=""), width=1800,height=900)

for(i in c(1:length(vars))){
varname <- vars[i]
print(varname)

plot <- ggplot(data=dfplot) +
aes_string(x = vars[i]) +
geom_histogram() +
xlab(paste(varname, sep="")) +
ylab("Häufigkeit") +
theme_bw(base_size=20)

plotlist[[varname]] <- plot
}

grid.arrange(plotlist[[1]], plotlist[[2]], plotlist[[3]],
plotlist[[4]], plotlist[[5]], plotlist[[6]],
plotlist[[7]], plotlist[[8]], plotlist[[9]],
widths=c(3,3,3), nrow=3,
main=textGrob(label="Verteilungen Mess-/Stellgrössen", gp=gpar(cex=3)))
dev.off()