r - ggtitle - ggplot title size
R+ggplot: trazado en varias páginas (2)
Intento escribir una función que traza un diagrama ggplot facet_wrap
en varias páginas. Es solo un truco, ya que esta característica parece estar en la lista de tareas de la función ggplot2. Hago algunos pequeños cálculos para encontrar el número de páginas que voy a necesitar, el número de filas de mi data.frame
que necesito por página, etc. Estoy bastante seguro de que todo esto funciona.
pdf(filename)
for (i in seq(num_pages)){
slice = seq(((i-1)*num_rows)+1,(i*num_rows))
slice = slice[!(slice > nrow(df.merged))]
df.segment=df.merged[slice,]
p <- ggplot(df.segment, aes(y=mean,x=phenotype))
p <- p + geom_bar(stat="identity",fill="white",colour="black")
p + facet_wrap("ID",scales="free_y",ncol=n_facets,nrow=n_facets)
}
dev.off()
Mi problema es que, envolviéndolo todo en un ciclo for como este, entre las funciones pdf()
y dev.off()
, es que el ciclo for no parece esperar que ggplot haga lo suyo, y recorre su ciclo muy rápidamente y genera un PDF inválido.
Si configuro i = 1
, inicie el pdf()
, ejecute el código anterior dentro del ciclo for, luego configure i=2
, luego ejecute el código, y así sucesivamente hasta que me aburra ( i=3
) y luego apague el dispositivo el PDF resultante es brillante.
¿Hay alguna forma de que pueda obtener el bucle for para esperar a que la línea final termine de trazar antes de pasar a la siguiente iteración?
Creo que el problema es que necesita imprimir () alrededor de su última línea (p + ...) para que realmente se imprima en el dispositivo dentro del ciclo for. . .
Exactamente. La página 39 del libro ggplot2 nos dice que cuando creas objetos ggplot2, puedes "Renderizarlo en la pantalla, con print (). Esto sucede automáticamente cuando se ejecuta interactivamente, pero dentro de un bucle o función, necesitarás imprimir () usted mismo ".