R: функция экспорта текущего активного графика R в Powerpoint / Word / LibreOffice

В настоящее время я всегда экспортирую свои графики 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 исходный код функций 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 устарел ...


person Tom Wenseleers    schedule 03.07.2015    source источник
comment
Для редактирования в Inkscape я обычно экспортирую в .svg. Что касается второй части вашего вопроса, вы говорите о RGui, RStudio или о чем-то еще?   -  person Nick Kennedy    schedule 04.07.2015
comment
Спасибо, что указали на это - у меня создалось впечатление, что .svg не поддерживает прозрачность / альфа-каналы, но, по-видимому, теперь он поддерживает ... Определенно известны случаи, когда экспорт svg также временами облажался ... И все же предпочитаю редактирование в Powerpoint, особенно для простых вещей. Вторая часть моего вопроса касалась того, как можно реализовать вкладку File ... Save As Powerpoint с помощью функции ниже, либо на вкладке графика RStudio, либо в интерактивном окне, которое вы получаете, когда вы используете windows (), а затем делаете свой график в том (под виндой)   -  person Tom Wenseleers    schedule 04.07.2015
comment
Я поддерживаю предложение, что экспорт в кнопку Powerpoint или простую в использовании функцию были бы удобны. Я знаю многих людей, которые более знакомы с Powerpoint, чем с Illustrator, Inkscape и т. Д. (И которые предпочитают вносить все тонкие настройки в программное обеспечение, управляемое мышью), и я уверен, что эта функция найдет широкое применение.   -  person lukeholman    schedule 05.07.2015


Ответы (2)


Только что создал новый пакет CRAN export, который позволяет экспортировать график R на текущем активном графическом устройстве в Powerpoint или Word (или LibreOffice Impress / Writer) в редактируемом (DrawingML) векторном формате как однострочный, с полной поддержкой для прозрачность и т. д., см. https://cran.r-project.org/web/packages/export/index.html и демонстрация на https://github.com/tomwenseleers/export

Например:

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

Пример экспорта 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)

введите описание изображения здесь

который после щелчка правой кнопкой мыши в PPT на "разгруппировать" можно увидеть в векторном формате:

введите описание изображения здесь

Из Word или PPT эти графики также отлично экспортируются в (векторный формат) PDF с помощью File ... Save as ... PDF, и гораздо проще внести незначительные изменения в макет, чем это возможно при редактировании непосредственно в PDF.

Если люди R Core или RStudio хотели бы включить эту функциональность, пожалуйста, сделайте это - я думаю, это было бы очень удобно для использования в классе, учитывая доминирование и широкое использование пакета Office!

person Tom Wenseleers    schedule 04.07.2015
comment
Может быть, это потому, что это старый пост, но я все еще борюсь с этим. Я пробовал ваши решения и получаю ошибку в addPlot.docx (doc, myplot, vector.graphic = vector.graphic, fontname = fontname,: аргумент 4 соответствует нескольким формальным аргументам - person edd; 23.03.2018
comment
@TomWenseleers, можно ли отправить свой пакет в репозиторий CRAN? Вероятно, вам придется изменить имя, поскольку экспорт может быть зарезервированным именем, например tomexport или TWexport. или Qwickexport. Думаю, это будет выгодно тем, кто не может установить с github (например, я .. эй, эй) - person R. Prost; 25.04.2018
comment
Чтобы сообщить вам, что эти функции экспорта теперь отсутствуют в CRAN, см. cran.r-project.org/web/packages/export/index.html - person Tom Wenseleers; 01.11.2018
comment
Пакет «экспорт» был удален из репозитория CRAN. - person dpel; 29.09.2020
comment
@dpel Да, извините, мне нужно снова загрузить его в CRAN. А пока последняя версия доступна на Github, github.com/tomwenseleers/export - person Tom Wenseleers; 30.09.2020

Вы можете попробовать пакет eoffice, который также доступен в CRAN.

person bioguo    schedule 18.06.2020