r ggplot2 export powerpoint reporters

R: Función para exportar el gráfico R actualmente activo a Powerpoint/Word/LibreOffice



ggplot2 reporters (1)

Acaba de realizar una nueva export paquetes CRAN que le permite exportar un gráfico R en el dispositivo gráfico actualmente activo a Powerpoint o Word (o LibreOffice Impress / Writer) en formato vectorial editable (DrawingML) como una sola línea, con soporte completo para transparencia, etc., consulte https://cran.r-project.org/web/packages/export/index.html y la demostración en https://github.com/tomwenseleers/export

Por ejemplo:

install.packages("export") library(export)

Ejemplo para exportar la trama de lattice :

library(effects) fit=lm(prestige ~ type + income*education, data=Prestige) plot(Effect(c("income", "education"), fit),multiline=T, ci.style="bands") graph2ppt(file="effect plot.pptx", width=7, height=5)

que después de hacer clic con el botón derecho en PPT en "desagrupar" puede verse muy bien en formato vectorial:

Desde Word o PPT, estos gráficos también se exportan perfectamente a (formato vectorial) PDF utilizando Archivo ... Guardar como ... PDF, y es mucho más fácil realizar ajustes menores en el diseño que editarlos directamente en el PDF.

Si a la gente de R Core o RStudio le gustaría incluir esta funcionalidad, por favor, sería muy útil para usar en el aula, creo, dado el dominio y el uso generalizado de la suite Office.

Actualmente, siempre exporto mis gráficos R a Powerpoint en formato vectorial utilizando el excelente paquete ReporteRs , como en

library(ReporteRs) myplot = function() print(qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7))) doc = pptx() doc = addSlide(doc, slide.layout = "Blank") doc = addPlot( doc, myplot, vector.graphic = TRUE, fontname="Arial", offx = 0.1*dim(doc)$slide.dim["width"], offy = 0.05*dim(doc)$slide.dim["height"], width = 0.8*dim(doc)$slide.dim["width"], height = 0.9*dim(doc)$slide.dim["height"]) writeDoc( doc, "plot.pptx")

Lo que encuentro inconveniente en este flujo de trabajo es que ahora tengo que envolver mis comandos de trazado en una función (con print() para trazados de lattice o ggplot2 , o simplemente return(plot()) para trazados de base R), y no lo hago. Me gusta tener que especificar manualmente las compensaciones y el tamaño (por lo general, prefiero obtener un gráfico casi centrado en mi diapositiva). Me preguntaba si, en cambio, no sería posible hacer su primer gráfico (gráfico R de base, gráfico de lattice o gráfico de ggplot2 ) y luego definir una función export2PPT que capture la salida de su dispositivo gráfico actual como una función y la transmita. a ReporteRs y addPlot para exportar su gráfico como Powerpoint (centrado y escalado adecuadamente), en analogía a la función dev.copy2pdf que funciona de la misma manera para exportar a PDF?

Y una vez que tengamos dicha función, quizás incluso modifiquemos el código fuente de grDevices de las funciones windows () y savePlot () para tener un comando adicional Archivo ... ¿Guardar como Powerpoint si uno estaba usando el dispositivo windows() ? ¿O es esto algo para que lo haga la gente de R Core?

Especialmente para uso en el aula, creo que sería muy útil, dado el predominio de MS Office / LibreOffice. (ya que Powerpoint es mucho más fácil de editar que el PDF, lo que permite realizar pequeños cambios en el diseño final de los gráficos R, y la salida vectorial es al menos tan buena como el PDF, además de que la transparencia también es totalmente compatible. en Inkscape es a menudo un poco buggy, a menos que uno use Adobe Illustrator)

¿Alguien que sepa hacer esto?

EDITAR: Mientras tanto, encontré la solución y envolví las funciones de exportación para exportar el gráfico R actualmente activo a powerpoint en un paquete en CRAN, consulte https://cran.r-project.org/web/packages/export/index.html y https://github.com/tomwenseleers/export para el uso de demostración. El paquete ahora usa el paquete de oficial como backend, ya que ReporteRs está en desuso ...