2012-10-05 13 views
6

Ho problemi con l'esportazione dei file EPS da R e l'importazione in Word 2010.R eps esportazione e l'importazione in Word 2010

sto usando ggplot2 trame, ad esempio

library(ggplot2) 
p <- qplot(disp,hp,data=mtcars) + stat_smooth() 
p 

anche dopo aver chiamato setEPS() nessuno dei seguenti file produce file che possono essere importati con successo.

ggsave("plot.eps") 

postscript("plot.eps") 
print(p) 
dev.off() 

La cosa strana è che se io produco la trama usando File ->Save As ->Postscript dal menu nella GUI, può essere importato in modo corretto. Tuttavia, quando il documento di Word viene successivamente esportato in formato pdf, i caratteri nell'immagine sono un po 'frastagliati.

Quindi le mie domande sono:

  • Che combinazione di impostazioni (ggsave/postscript) mi permette di produrre file EPS che possono essere importati in Word 2010?
  • Come posso garantire che i font rimangono chiaro quando il documento di Word viene esportato in formato PDF?

Aggiornamento

Dopo ulteriori indagini ho avuto più fortuna con cairo_ps per produrre le trame. Tuttavia, non viene visualizzato alcun testo quando viene importato in Word.

Inoltre, dopo aver controllato le varie uscite EPS (cairo_ps, salvare dalla GUI, ggsave) in un documento lattice, sembra che il filtro di importazione EPS in Word piuttosto scarsa come la stampa/output PDF non corrisponde alla qualità del documento in lattice. La versione ggsave (che utilizza postscript) ha avuto alcuni problemi con i colori che gli altri due metodi non hanno avuto però.

La conclusione è che questo è un problema di Word e quindi fortune(109) non si applica. Sarei felice di essere a prova contraria, ma io attribuisco la risposta e la grazia a chiunque in grado di fornire i comandi che possono replicare l'uscita dalla GUI in forma di comando.

+0

Probabilmente si tratta di un problema di Word 2007+: "[Impossibilità di utilizzare grafica EPS in Word 2007 e fare un pdf] (http: // forum .adobe.com/filetto/439.881)." –

risposta

4

questo ha funzionato per me ... seguendo i consigli nella pagina postscript aiuto:

postscript("RPlot.eps", height = 4, width = 4, horizontal = FALSE, onefile = FALSE, 
      paper = "special") 
library(ggplot2) 
p <- qplot(disp,hp,data=mtcars) + stat_smooth() 
p 
#geom_smooth: method="auto" and size of largest group is <1000, so using loess. Use 'method = x' to #change the smoothing method. 
#Warning message: 
#In grid.Call.graphics(L_polygon, x$x, x$y, index) : 
# semi-transparency is not supported on this device: reported only once per page 
dev.off() 
#quartz 
#  2 

La roba divertente alla fine si mette sull'avviso che questa è solo una soluzione per Mac-testato, finora comunque.

Modifica: l'ho appena testato con la versione R 2.15.1 (2012-06-22) - "Marshmallows arrostiti": Piattaforma: i386-pc-mingw32/i386 (32-bit) e MS Word 2007 in Win XP e ha funzionato. I comandi erano Insert/Picture .../select eps format/select file.

Edit2: V'è un altro metodo per il salvataggio inoltre direttamente utilizzando il dispositivo PostScript. Il metodo savePlot con una modalità "eps" è disponibile in Windows (ma non nel Mac). Sono d'accordo sul fatto che i caratteri non sono così fluidi come appaiono su un Mac, ma non posso distinguere alcuna differenza di qualità tra il salvataggio con savePlot e l'utilizzo del salvataggio come da una finestra interattiva.

savePlot(filename = "Rplot2", type = "eps", device = dev.cur(), restoreConsole = TRUE) 

savePlot chiamate (.External(CsavePlot, device, filename, type, restoreConsole))

+0

penso ' setEPS() 'imposta queste opzioni a livello globale. In ogni caso, non funziona ancora per me su Windows. – James

+0

Mostra solo in alcune delle modalità di visualizzazione. Ma questo è un problema di Word, non un problema di R. –

+0

'savePlot' sembra la risposta, ma ha meno flessibilità degli altri metodi. Sì, sono d'accordo, e lo sapevo sempre, che Word era il problema - ha più stranezze e bug rispetto alla sessione breakout di entomologia alla conferenza nazionale OCD! Ad ogni modo, Bravo! Il segno di spunta e la generosità sono tuoi. – James

1

si sono probabilmente meglio di utilizzare wmf come un formato che è possibile creare su Windows.

+0

non necessariamente, anche il formato wmf può essere un po 'problematico. Ho pensato che ci fosse un bel riferimento all'esportazione di elementi grafici in MS Office su R-wiki, ma non riesco a trovarlo. –

+1

Beh il mio consiglio _real_ è, naturalmente, di non toccare Parola a tutti, ma non tutti possono sfuggire al lattice/sweave/knitr/RMD/... Detto questo, quando ho dovuto usare in passato, WMF era il meno doloroso opzione. –

+0

genere ho avuto la miglior fortuna con ridicolmente PNG ad alta risoluzione (dimensione della memoria non è scalabile che male), che potrebbe poi essere ridimensionate in modo appropriato all'interno del documento di Office. L'unico trucco è mantenere costante la "dimensione fisica" (ridimensionamento di caratteri, cex, ecc.) Mentre si alza la risoluzione. –

0

È possibile utilizzare R in studio a lavorare a maglia file html con tutti i tuoi trame e file HTML poi aprire con Word.

knitr tutorial

+0

Da quando HTML supporta l'EPS di Word supporta SVG? – mlt

+0

Non stavo parlando di EPS. Stavo solo dicendo di un modo semplice per ottenere i tuoi grafici in Word. – jem77bfp

4

ho risolto il problema con l'esportazione di file .eps da R e l'importazione in Word 2010 su Windows 7 utilizzando l'opzione colormodel="rgb" (il default è "srgb") del comando postscript.

postscript("RPlot.eps", height = 4, width = 4, horizontal = FALSE, 
     paper = "special", colormodel = "rgb") 
library(ggplot2) 
p <- qplot(disp,hp,data=mtcars) + stat_smooth(se=FALSE, method="loess") 
p 
dev.off() 
1

Word infatti non supporta molto bene l'EPS. Il best solution I've seen so far per fare grafici R (trame di base R, trame reticolari o ggplots) lavorano insieme con Office (Word, Powerpoint) è quello di esportare direttamente ad un Powerpoint utilizzando il pacchetto ReporteRs, come in

library(ReporteRs) 
require(ggplot2) 
mydoc = pptx() 
mydoc = addSlide(mydoc, slide.layout = "Title and Content") 
mydoc = addTitle(mydoc, "Plot examples") 
myplot = qplot(Sepal.Length, Petal.Length 
       , data = iris, color = Species 
       , size = Petal.Width, alpha = I(0.7) 
) 
mydoc = addPlot(mydoc, function() print(myplot), vector.graphic=TRUE) 
writeDoc(mydoc, file = "test plot.pptx") 

enter image description here

Questo si traduce in un completamente modificabili, di alta qualità grafico in formato Powerpoint DrawingML a base di vettore nativo di Office, che si può anche facilmente copiare & incolla come metafile avanzato, se ti piace (utilizzando Copia Incolla speciale ... ... Enhanced metafile), e che a differenza dei campi elettromagnetici esportati da R supporta pienamente la trasparenza. Per la produzione finale è anche possibile stamparlo facilmente in PDF da Powerpoint, se necessario, e rimarrà bene in formato vettoriale quindi di buona qualità.

Per una trama di base R la sintassi sarebbe:

library(ReporteRs) 
mydoc = pptx() 
mydoc = addSlide(mydoc, slide.layout = "Title and Content") 
mydoc = addTitle(mydoc, "") 
myplot = function() {return(plot(c(1:100), c(1:100), pch=20))} 
mydoc = addPlot(mydoc, fun=myplot, vector.graphic=TRUE, offx=0,offy=0,width=12, height=8, fontname="Calibri", pointsize=20) 
writeDoc(mydoc, file = "test plot2.pptx") 
Problemi correlati