Ich habe eine Funktion DisplayPlot, die als Eingabe eine Liste von Zeichenfolgen (die sich auf Spalten in einem Datenrahmen bezieht). Zum Beispiel, wenn list_string = c ("string1", "string2"), looping auf die Elemente von list_string, möchte ich die zwei ggplots Seite-an-Seite anzeigen.R: Anzeige nebeneinander eine Variable Anzahl von ggplots innerhalb einer Funktion generiert
Bisher, was ich in meiner Funktion getan wird, um die ggplots in eine Liste zu speichern:
for (i in 1:length(list_string){
p = ggplot(data=d, aes(x=d[,1], y=as.numeric(levels(d[,(i+1)]))[d[,(i+1)]], fill=d[,1])) +
geom_bar(stat="identity") +
guides(fill=FALSE) +
labs(x = Y) + labs(y = paste("CP",list_X[i],"_per_",Y,sep = ""))
graph[[length(graph) + 1]] <- p }
und zurück:
return(list(graph=graph, along with some other information))
Das Problem ist, dass, wenn ich will, wie eine Funktion verwenden grid.arrange
, ich muss manuell die Namen der Diagramme schreiben: grid.arrange(p1,p2,ncol=2)
während in meinem Fall diese Zahl variieren kann und in einer Liste gespeichert werden (Format, das grid.arrange
nicht gefällt).
Vielen Dank im Voraus für Ihre Hilfe, Clement
als Nebennote, sollten Sie nie 'verwenden [ 'oder' $ 'innerhalb' aes' – baptiste
warum sollte ich sie nie in AES verwenden? – galzra
Hier ist eine Illustration, was schief gehen kann: http://stackoverflow.com/a/32543753/471093 – baptiste