2016-04-27 6 views
0

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

+5

als Nebennote, sollten Sie nie 'verwenden [ 'oder' $ 'innerhalb' aes' – baptiste

+0

warum sollte ich sie nie in AES verwenden? – galzra

+0

Hier ist eine Illustration, was schief gehen kann: http://stackoverflow.com/a/32543753/471093 – baptiste

Antwort

10
grid.arrange(grobs = graph) 

oder (historisch gesehen, es war ein Grobs Argument nicht immer),

do.call(grid.arrange, graph) 
+0

Vielen Dank, das funktioniert gut . Die Funktion multiplot() ist auch eine gute Lösung – galzra

-2

ich eine Antwort auf mein Problem gefunden.

multiplot(plotlist=graph,col=length(list_string)) 

vom Rmisc Paket

+1

Dies ist mehr ein Kommentar als eine echte Antwort .... – Jaap

+0

Sie sollten sagen, wo Sie die Funktion 'multiplot' haben. Es scheint in einer Reihe von verschiedenen Paketen, meist aus [diese Seite des R-Kochbuchs] (http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_%28gplot2%29/) –

Verwandte Themen