2012-10-05 65 views
6

Tengo problemas con la exportación de archivos EPS de R e importar en Word 2010.R eps exportación e importación en Word 2010

estoy usando ggplot2 parcelas, por ejemplo

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

Incluso después de llamar setEPS() ninguno de los siguientes archivos de productos que se pueden importar con éxito.

ggsave("plot.eps") 

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

Lo extraño es que si produzco la trama usando File ->Save As ->Postscript desde el menú de la interfaz gráfica de usuario, que puede ser importado correctamente. Sin embargo, cuando el documento de Word se exporta posteriormente como un pdf, las fuentes en el gráfico son un poco irregulares.

Así que mis preguntas son:

  • ¿Qué combinación de ajustes (ggsave/postscript) me permite producir archivos EPS que se pueden importar en Word 2010?
  • ¿Cómo puedo asegurar que las fuentes permanezcan claras cuando el documento de Word se exporta como un pdf?

actualización

Después de más investigación que he tenido más suerte con cairo_ps para producir las parcelas. Sin embargo, no aparece ningún texto cuando se importa a Word.

Por otra parte, después de comprobar las diferentes salidas (EPS cairo_ps, salvarlo de la interfaz gráfica de usuario, ggsave) en un documento de látex, parece que el filtro de importación EPS en Word bastante pobre como la salida impresa/pdf no coincide con la calidad del documento de latex La versión ggsave (que usa postscript) tuvo algunos problemas con los colores que los otros dos métodos no tenían.

La conclusión es que esto es un problema de Word y por lo tanto fortune(109) no se aplica. Me alegra que se demuestre lo contrario, pero otorgaré la respuesta y la recompensa a quien pueda proporcionar los comandos que pueden replicar la salida de la GUI en forma de comando.

+0

Probablemente se trata de un problema de Word 2007+: "[La incapacidad para utilizar gráficos EPS en Word 2007 y hacer un pdf] (http: // foros .adobe.com/thread/439881). " –

Respuesta

4

Esto funcionó para mí ... siguiendo el consejo en la página de ayuda postscript:

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 materia divertida al final le pone sobre aviso de que esto es sólo una solución probada-Mac, en lo que va de todos modos.

Edición: Acabo de probarlo con R versión 2.15.1 (2012-06-22) - "Roasted Marshmallows": Plataforma: i386-pc-mingw32/i386 (32 bits) y MS Word 2007 en Win XP y funcionó. Los comandos fueron Insert/Picture .../select eps format/select file.

Edit2: Hay otro método para guardar además de usar directamente el dispositivo postscript. El método savePlot con un modo "eps" está disponible en Windows (pero no en Mac). Estoy de acuerdo en que las fuentes no son tan sencillas como aparecen en una Mac, pero no puedo discernir ninguna diferencia en la calidad entre guardar con savePlot y usar guardar como desde una ventana interactiva.

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

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

+0

Creo que ' setEPS() 'establece estas opciones globalmente. En cualquier caso, todavía no funciona para mí en Windows. – James

+0

Solo se muestra en algunos de los modos de visualización. Pero eso es un problema de Word, no de R. –

+0

'savePlot' parece la respuesta, pero tiene menos flexibilidad que los otros métodos. Sí, estoy de acuerdo, y siempre supe realmente, esa Palabra era el problema: ¡tiene más peculiaridades y errores que la sesión de entomología en la conferencia nacional de OCD! De todos modos, Bravo! El tic y la recompensa son tuyos. – James

1

Probablemente sea mejor que use wmf como un formato que puede crear en Windows.

+0

no necesariamente, el formato wmf también puede ser un poco impreciso. Pensé que había una buena referencia sobre exportar gráficos a MS Office en la R-wiki, pero no puedo encontrarla. –

+1

Bueno, mi _real_ consejo es, por supuesto, no tocar Word en absoluto, pero no todos pueden escapar a latex/sweave/knitr/rmd/... Dicho esto, cuando tuve que usarlo en el pasado, wmf fue el menos doloroso opción. –

+0

Por lo general, tuve la mejor suerte con PNG ridículamente de alta resolución (el tamaño de almacenamiento no se escala tan mal) que luego se podía redimensionar adecuadamente en el documento de Office. El único truco es mantener el 'tamaño físico' (escalado de fuentes, cex, etc.) constante mientras se aumenta la resolución. –

0

Puede utilizar el estudio de I a hacer punto archivos html con todas sus parcelas y archivos HTML a continuación, abrir con Word.

knitr tutorial

+0

¿Desde cuándo el soporte HTML EPS de Word admite SVG? – mlt

+0

No estaba diciendo nada sobre EPS. Solo decía sobre una forma fácil de convertir tus gráficos en Word. – jem77bfp

4

He resuelto el problema con la exportación de archivos .eps de R e importar en Word 2010 en Windows 7 usando la opción colormodel="rgb" (por defecto es "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 indeed no es compatible con EPS muy bien. El best solution I've seen so far hacer gráficas R (parcelas base de R, parcelas de celosía o ggplots) trabajan junto con Office (Word, Powerpoint) es exportar directamente a un Powerpoint utilizando el paquete de ReporteRs, como en

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

Esto da como resultado un gráfico de PowerPoint totalmente editable y de alta calidad en formato DrawingML basado en vectores nativos de Office, que también puede copiar fácilmente & pegar como metarchivo mejorado si lo desea (utilizando Copiar ... Pegar especial ... Metarchivo mejorado), y que, a diferencia de los CEM exportados desde R, también respalda plenamente la transparencia. Para la producción final también puede imprimirlo fácilmente en PDF desde Powerpoint si es necesario, y se mantendrá muy bien en formato vectorial y luego en buena calidad.

Para una trama de base R la sintaxis sería:

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") 
Cuestiones relacionadas