2017-09-13 2 views
1

ich diese ArbeitsschleifeSchleife mit grid.arrange statt mfrow

mit der Grund Plotfunktion haben
#my_data is a data.frame defined before 
day = c("2016-12-24","2016-12-25", "2016-12-31") 
par(mfrow = c(length(day),1)) 
for (i in 8:length(my_data)){ 
    for (j in 1:length(day)){ 
     plot(x=my_data$Zeit[which(my_data$Datum == day[j])], y=my_data[which(my_data$Datum == day[j]),i], type="l", 
     main=colnames(my_data[i]), xlab=day[j], ylab=my_units[1,i]) 
    } 
} 

Doch statt der Grund Plotfunktion, möchte ich ggplot verwenden. Mit der Suchfunktion auf dieser Platine habe ich den Befehl "grid.arrange" gefunden, der aber irgendwie nicht funktioniert.

Edit: Dies ist mein neuer Code mit "do.call". Danke schon für diesen Hinweis.

Edit2: Jetzt funktioniert es. Ich verstehe nicht warum, aber mit den Zeilen "#Added" druckt es nicht die gleiche Handlung dreimal.

for (i in 8:length(my_data)){ 
for (j in 1:length(day)){ 
    local({ #Added 
    i <- i #Added 
    t <- which(my_data$Datum == day[j]) 
    p[[j]] <<- ggplot(my_data[t,], aes(my_data$Zeit[t], my_data[t,i]))+ #Changed to <<- 
    geom_line()+ 
    labs(x = "", y = my_units[[i]], title = colnames(my_units[i]))+ 
    theme_own() 
    }) #Added 
} 

Edit: Was will ich die Daten für mehrere Tage ist Handlung tun (in diesem Beispiel drei) in dem gleichen „Bild“. Ich möchte das für alle Spalten wiederholen (8: length (my_data)).

Mit diesem neuen Code und "do.call" bekomme ich drei Plots wie ich will, aber diese Plots sind alle für den gleichen (den letzten) Tag. Warum werden die ersten beiden Daten überschrieben?

Edit2: Ich fand den Hinweis hier: for loop with ggplots produces graphs with identical values but different headings

Vielen Dank für Ihre Hilfe :)

Antwort

0

Es ist schwer, genau zu erraten, was Ihr Ziel ist es, weil Ihr Beispiel einen Aufruf an grid.arrange innerhalb einer for- hat Schleife. Aber versuchen Sie do.call("grid.arrange", c(plist, ncol=2)) an seiner Stelle.

+1

Sie müssen do.call nicht mehr verwenden, können Sie 'grid.arrange (grobs = plist)' – user20650

+0

* nicht brauchen * * ^^ – user20650