web-dev-qa-db-fra.com

R: Fonction pour exporter le tracé R actuellement actif vers PowerPoint / Word / LibreOffice

Actuellement, j'exporte toujours mes graphiques R vers PowerPoint au format vectoriel en utilisant l'excellent package ReporteRs, comme dans

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

enter image description here

Ce que je trouve gênant dans ce flux de travail, c'est que je dois maintenant encapsuler mes commandes de tracé dans une fonction (avec print() pour lattice ou ggplot2 Tracés, ou simplement return(plot()) pour les tracés de base R), et que je n'aime pas avoir à spécifier manuellement les décalages et la taille (je préfère généralement obtenir un graphique presque plein, presque centré dans ma diapositive). Je me demandais simplement s'il ne serait pas possible de créer d'abord votre tracé (tracé de base R, lattice tracé ou ggplot2 Tracé), puis de définir une fonction export2PPT Qui capture la sortie de votre périphérique graphique actuel en tant que fonction et la transmet à ReporteRs et addPlot pour exporter votre tracé au format PowerPoint (centré et mis à l'échelle de manière appropriée), par analogie avec la fonction dev.copy2pdf qui fonctionne de la même manière pour exporter au format PDF?

Et une fois que nous avons une telle fonction, peut-être même modifiez le code source grDevices des fonctions windows () et savePlot () pour avoir une commande supplémentaire File. ..Enregistrer en tant que PowerPoint si l'on utilisait le périphérique windows()? Ou est-ce quelque chose que les gens de R Core doivent faire?

Surtout pour une utilisation en classe, ce serait très pratique, je pense, étant donné la domination de MS Office/LibreOffice. (comme PowerPoint est beaucoup plus facile à modifier que PDF, ce qui permet de faire facilement de petits changements dans la disposition finale des graphiques R, et la sortie vectorielle est au moins aussi bonne que PDF, plus la transparence est également entièrement prise en charge - pour PDF Je trouve que l'importation dans Inkscape est souvent un peu boguée, sauf si l'on utilise Adobe Illustrator)

Quelqu'un qui sait comment faire cela?

EDIT: En attendant, j'ai trouvé la solution et j'ai encapsulé des fonctions d'exportation pour exporter le tracé R actuellement actif vers PowerPoint dans un package sur CRAN, voir https://cran.r-project.org/web/packages /export/index.html et https://github.com/tomwenseleers/export pour une utilisation de démonstration. Le package utilise désormais le package officier comme backend, car ReporteRs est obsolète ...

20
Tom Wenseleers

Je viens de créer un nouveau package CRAN export qui permet d'exporter un tracé R dans le périphérique graphique actuellement actif vers PowerPoint ou Word (ou LibreOffice Impress/Writer) au format vectoriel éditable (DrawingML) sous la forme d'une ligne , avec un support complet pour la transparence, etc., voir https://cran.r-project.org/web/packages/export/index.html et démo sur https: // github .com/tomwenseleers/export

Par exemple:

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

Exemple pour exporter le tracé 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)

enter image description here

qui après un clic droit dans PPT sur "dissocier" peut être vu comme étant bien au format vectoriel:

enter image description here

De Word ou PPT ces graphiques exportent également parfaitement vers (format vectoriel) PDF en utilisant Fichier ... Enregistrer sous ... PDF, et c'est beaucoup plus il est plus facile de faire des ajustements mineurs à la mise en page que ce qui est possible en modifiant directement dans le PDF.

Si les personnes R Core ou RStudio souhaitent inclure cette fonctionnalité, veuillez le faire - serait super pratique pour une utilisation en classe, je pense, étant donné la dominance et l'utilisation généralisée de la suite Office!

32
Tom Wenseleers