В настоящее время я всегда экспортирую свои графики R в Powerpoint в векторном формате, используя отличный пакет ReporteRs
, как в
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")
Что мне неудобно в этом рабочем процессе, так это то, что теперь мне нужно обернуть мои команды построения графиков в функцию (с print()
для графиков lattice
или ggplot2
, или просто return(plot())
для графиков базового R), и что мне не нравится указывать вручную смещения и размер (я обычно предпочитаю, чтобы на моем слайде был почти заполненный центрированный график). Мне просто было интересно, нельзя ли вместо этого сначала сделать ваш график (базовый график R, lattice
график или ggplot2
график), а затем определить функцию export2PPT
, которая захватывает вывод вашего текущего графического устройства как функцию и передает его в ReporteRs
и addPlot
, чтобы экспортировать график как PowerPoint (центрированный и соответствующим образом масштабированный), по аналогии с функцией dev.copy2pdf
, которая работает таким же образом при экспорте в PDF?
И как только у нас появится такая функция, возможно, даже изменит grDevices
исходный код a > функций windows () и savePlot (), чтобы получить дополнительную команду File ... Save as Powerpoint, если использовалось windows()
устройство? Или это должны делать люди R Core?
Я думаю, что особенно для использования в классе это было бы очень удобно, учитывая доминирование MS Office / LibreOffice. (поскольку Powerpoint редактировать намного проще, чем PDF, что позволяет легко вносить небольшие изменения в окончательный макет графиков R, а векторный вывод по крайней мере так же хорош, как PDF, плюс также полностью поддерживается прозрачность - для PDF я считаю, что импорт в Inkscape часто немного глючит, если только вы не используете Adobe Illustrator)
Кто-нибудь знает, как это сделать?
РЕДАКТИРОВАТЬ: Тем временем я нашел решение и обернул функции экспорта для экспорта текущего активного графика R в powerpoint в пакете на CRAN, см. https://cran.r-project.org/web/packages/export/index.html и https://github.com/tomwenseleers/export для демонстрационного использования. Пакет теперь использует пакет офицера в качестве бэкэнда, поскольку ReporteRs устарел ...