2010-03-30 11 views
25

que me gustaría para desovar varias ventanas gráficas desde dentro de una función en R utilizando gráficos ggplot ...generar múltiples gráficos desde dentro de una función 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) 

Sin embargo, ni dev.new() ni la rejilla. newpage() parece eliminar el gráfico anterior.

Sé que, en R, las funciones normalmente solo producen lo último que evalúan, pero me gustaría entender mejor el proceso y conocer posibles soluciones provisionales.

¿Pensamientos?

+1

Quizás R Preguntas más frecuentes 7.22 http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-lattice_002ftrellis-graphics-not-work_003f – rcs

+0

@rcs Tu comentario responde la pregunta. Escríbelo como una respuesta, para que pueda ser aceptado. –

+0

comentario de rcs sugiere que alguien no lea las preguntas frecuentes;) – Marek

Respuesta

24

grid funciones gráficas basadas en celosía y ggplot2 crean un objeto gráfico, pero no lo muestran. El método print() para el objeto gráfico que produce la pantalla real, es decir,

print(qplot(x, y)) 

soluciona el problema.

Ver R FAQ 7.22.

+1

Su consejo es correcto, pero en realidad no tiene nada que ver con la cuadrícula; es solo una decisión de estilo de programación. – hadley

+4

+1: Esto me dejó perplejo durante 30 minutos. Este problema es tan importante que vale la pena reproducirlo: *** "Se requiere un método de impresión() para el objeto gráfico para producir una visualización real. Cuando se usan funciones (ggplot2, cuadrícula, etc.) interactivamente en la línea de comando, el el resultado se imprime automáticamente, pero en el código fuente() o dentro de sus propias funciones, necesitará una instrucción print() explícita. "*** – smci

+0

http://cran.r-project.org/doc/FAQ/R-FAQ. html # Why-do-lattice_002ftrellis-graphics-not-work_003f – marbel

Cuestiones relacionadas