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 ...