2010-03-30 14 views
25

mi piacerebbe deporre le uova diverse finestre grafiche all'interno di una funzione in R utilizzando la grafica ggplot ...generare più grafica da all'interno di una funzione R

testf <- function(a, b) { 
    devAskNewPage(TRUE) 
    qplot(a, b); 
    # grid.newpage(recording = TRUE) 
    dev.new() 
    qplot(a, a+a); 
    # grid.newpage(recording = TRUE) 
    dev.new() 
    qplot(b, b+b); 
} 

library(ggplot2) 

x <- rnorm(50) 
y <- rnorm(50) 
testf(x, y) 

Tuttavia, né dev.new(), né di griglia. newpage() sembra scaricare la trama precedente.

So che, in R, le funzioni normalmente producono solo l'ultima cosa che valutano, ma mi piacerebbe capire meglio il processo e apprendere eventuali soluzioni alternative.

Pensieri?

+1

Forse R domande frequenti 7.22 http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-lattice_002ftrellis-graphics-not-work_003f – rcs

+0

@rcs Il tuo commento risponde alla domanda. Scrivilo come risposta, così come può essere accettato. –

+0

il commento di rcs suggerisce che qualcuno non legge una FAQ;) – Marek

risposta

24

La griglia griglia -based funzioni grafiche in lattice e ggplot2 creano un oggetto grafico, ma non lo visualizzano. Il metodo print() per l'oggetto grafico produce la visualizzazione reale, cioè,

print(qplot(x, y)) 

risolve il problema.

Vedere R FAQ 7.22.

+1

Il tuo consiglio è corretto, ma in realtà non ha nulla a che fare con la griglia: è solo una decisione di stile di programmazione. – hadley

+4

+1: questo mi ha bloccato per 30 minuti. Questo getcha è così importante che vale la pena di riprodurlo: "Un metodo print() per l'oggetto grafico è necessario per produrre una visualizzazione reale. Quando usi (ggplot2, grid, ecc.) Le funzioni in modo interattivo alla riga di comando, il risultato viene stampato automaticamente, ma in source() o all'interno delle tue funzioni hai bisogno di un'esplicita istruzione print(). "*** – smci

+0

http://cran.r-project.org/doc/FAQ/R-FAQ. html # Perché fai-da-lattice_002ftrellis-graphics-non-work_003f – marbel

Problemi correlati