2012-05-08 2 views
16

Sto creando un intero casino di grafici e vorrei esportare i grafici prodotti come PDF. È possibile fare clic su "esporta" nella scheda Plot in rstudio e selezionare manualmente "salva trama come PDF", naturalmente, e preferirei non racchiudere ogni singola sezione in pdf()/dev.off().Esiste un comando per esportare il grafico corrente?

Idealmente mi piacerebbe una funzione che prenda la trama attualmente visualizzata in RStudio e la salvi con i parametri che mi piacerebbe (formato/nomefile/larghezza/altezza).

Pensieri?

Aggiornamento

Come da @ di naught101 suggerimento - per un 5x7 (pollici!) File pdf che è una dimensione comoda per essere incollato in un documento A4 di Word, le seguenti opere così:

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

Meglio ancora, come facilmente detta funzione con dimensioni predefinite:

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

Durante l'utilizzo ggplot2 mi avrebbe permesso di salvare usando la funzione ggsave, dev.copy2pdf è una buona soluzione generica (rispondendo alla mia domanda originale).

+0

Fornire un esempio riproducibile. Perché non hai un solo pdf() all'inizio del tuo script e un singolo dev.off() alla fine del tuo script? Tutti i grafici creati verranno inseriti in un unico pdf piacevole? –

+0

Lo script R con cui sto lavorando crea oltre 15 grafici che devono essere incorporati in un documento Word; la loro dimensione varia (quindi un singolo PDF non sarebbe d'aiuto) e vorrei collegare i PDF di trama quando sono incorporati nel documento in modo che si aggiornino quando cambio il PDF (quindi ho bisogno di singoli file). In più, questo ha molto a che fare con il flusso di lavoro - io ritocco molto i grafici mentre esploro i dati (che arrivano in diretta da un modulo GDocs), e vorrei poter usare la versione finale che trovo di fronte a me. Ad esempio, qualsiasi trama andrà a ... – Simbamangu

+0

perché non usi un blocco png() e dev.off() prima di ogni trama? Penso che tu abbia bisogno di articolare meglio la tua domanda. – nav

risposta

10

Penso che stiate cercando dev.copy2pdf. Ciò consente di copiare il dispositivo corrente in un pdf, utilizzando gli stessi argomenti di pdf(). Funziona altrettanto bene per le funzioni di tracciamento di base come per ggplot2, (e qualsiasi altra libreria di tracciamento che usa i dispositivi di tracciamento grDevice standard, a giudicare da ciò).

+0

Perfetto! Esattamente quello che stavo cercando. – Simbamangu

7

Se si utilizza ggplot2, è possibile utilizzare la funzione ggsave per salvare il grafico corrente. Questa funzione consente di scegliere la larghezza, altezza ecc. Del grafico risultante (PDF, png o altro). Quando non si utilizza ggplot2, è possibile utilizzare la funzione savePlot per ottenere funzionalità simili, sebbene la pagina man suggerisca che funzioni solo sui dispositivi cairo X11.

+0

'savePlot' non sembra funzionare in questo caso (RStudio su OSX 10.7), sfortunatamente; sembra che la funzione ggsave funzioni bene se avessi fatto tutto in ggplot2 (che ora sto leggendo). – Simbamangu