2012-05-08 13 views
16

Estoy creando un lío completo de gráficos y me gustaría exportar los gráficos producidos como PDF. Es posible hacer clic en 'exportar' en la pestaña Plotear en rstudio y seleccionar manualmente "guardar diagrama como PDF", por supuesto, y preferiría no envolver cada una de mis secciones en pdf()/dev.off().¿Hay un comando para exportar el gráfico actual?

Idealmente, me gustaría tener una función que tomaría el trazado actualmente visualizado en RStudio y lo guardaría con los parámetros que quisiera (formato/nombre de archivo/ancho/alto).

¿Pensamientos?

actualización

según la sugerencia de @ naught101 - para un 5x7 (pulgadas!) Archivo pdf que es un tamaño conveniente para ser pegado en un documento A4 Word, las siguientes obras así:

dev.copy2pdf(file="example.pdf", width = 7, height = 5) 

Mejor aún, como una función fácilmente llamada con dimensiones predeterminadas:

dopdf <- function(filename = "dopdf.pdf", pdf.width = 7, pdf.height = 5) { 
dev.copy2pdf(file=filename, width = pdf.width, height = pdf.height) 
} 

Durante el uso de ggplot2 me habría dejado guardar usando la función ggsave, dev.copy2pdf es una buena solución genérica (respondiendo a mi pregunta original).

+0

Proporcione un ejemplo reproducible. ¿Por qué no tener un solo pdf() en la parte superior de su script y un único dev.off() al final de su script? Todas las parcelas creadas se colocarán en un solo y agradable pdf? –

+0

El script R con el que estoy trabajando crea más de 15 diagramas que deben incrustarse en un documento de Word; su tamaño varía (por lo tanto, un único PDF no ayuda) y me gustaría vincular los PDF de la parcela cuando están incrustados en el documento para que se actualicen cuando cambie el PDF (por lo que necesitan archivos individuales). Además, esto tiene mucho que ver con el flujo de trabajo: modifico mucho las tramas mientras exploro datos (que vienen en vivo desde un formulario de GDocs), y me gustaría poder utilizar la versión final que encuentro en frente de mí. Por ejemplo, cualquier diagrama hará ... – Simbamangu

+0

¿por qué no utiliza un bloque png() & dev.off() antes de cada diagrama? Creo que necesitas articular mejor tu pregunta. – nav

Respuesta

10

Creo que estás buscando dev.copy2pdf. Esto le permite copiar el dispositivo actual a un pdf, usando los mismos argumentos que pdf(). Funciona igual de bien para las funciones de trazado base que para ggplot2, (y cualquier otra librería de trazado que use los dispositivos de trazado grDevice estándar, por su aspecto).

+0

¡Perfecto! Exactamente lo que estaba buscando. – Simbamangu

7

Si usa ggplot2, puede usar la función ggsave para guardar la gráfica actual. Esta función le permite elegir el ancho, alto, etc. del gráfico resultante (PDF, png u otro). Cuando no se utiliza ggplot2, la función savePlot se puede utilizar para obtener una funcionalidad similar, aunque la página man sugiere que solo funciona en los dispositivos de cairo X11.

+0

'savePlot' no parece funcionar en este caso (RStudio en OSX 10.7), desafortunadamente; Parece que la función ggsave funcionaría bien si hubiera hecho todo en ggplot2 (que ahora estoy leyendo). – Simbamangu

Cuestiones relacionadas