У меня есть презентация в формате pptx, которую мне нужно часто обновлять с помощью графиков, которые я генерирую с помощью R-скрипта. Я хотел бы автоматизировать замену графиков без необходимости копировать и вставлять между экранами целую кучу раз. Я играл с пакетом ReporteRs, и он кажется многообещающим, но я не могу понять, как просто заменить графики, которые уже есть в презентации. Во всей документации ReporteRs указано, что вам нужно добавить новый слайд, а затем поместить графики на этот новый слайд. Есть ли способ сказать «удалить график на слайде 7 и заменить его графиком XXX?» Является ли ReporteRs лучшим пакетом для этого?
R ReporteRs: редактирование существующих слайдов
Ответы (3)
Пытаться:
library(DescTools)
# create a new PP instance
pp <- GetNewPP()
# create your plt and insert into pp
barplot(1:5)
pic <- PpPlot(width=10, height=5, pp=pp)
# add a new slide
PpAddSlide()
# new plot on new slide, just to make it difficult to go back
barplot(10:5)
pic2 <- PpPlot(width=10, height=5, pp=pp)
# get a collection of slides
slides <- pp[["ActivePresentation"]][["Slides"]]
# maybe convenient to go back to slide 1
slides$Item(1)$Select()
# get a handle to slide 1
slide1 <- slides$Item(1)
# get handle to any pic on the slide
pic1 <- slide1[["Shapes"]]$Item(1)
# delete it
pic1$Delete()
# create and insert a new one
barplot(rep(1,5), col="red")
PpPlot(width=10, height=5, pp=pp)
Согласно документации ReporteRs
, это должно быть относительно просто. Как говорит @lawyeR, это касается «закладок». Вы можете найти примеры от автора пакета здесь.
В качестве примера, почти дословно, по этой ссылке код будет похож на этот:
mydoc = pptx(template = 'examples/pp_simple_example.pptx' )
myplot = qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7))
# This is the important line, note the 'bookmark' pertaining to slide
mydoc = addSlide( mydoc, slide.layout = 'Title and Content', bookmark=2)
# change title
mydoc = addTitle( mydoc, 'my new graph')
# add the plot
mydoc = addPlot( mydoc, print, x = myplot )
# save changes to new file
writeDoc( mydoc, 'examples/pp_replacement.pptx' )
Как упоминалось ниже, сопровождающий исправил ошибку. Теперь вы можете заменить слайды. Как вы заметили, это заменяет весь слайд. Хотя поначалу это немного неудобно, вы можете легко настроить сценарий для добавления одного и того же заголовка, текста и т. д. к слайду, и вы можете легко копировать слайд много раз. При этом вы также можете быстро изменить любой текст, если что-то изменится (пища для размышлений).
С ReporteRs
(бывший R2DOCX), я полагаю, вы можете использовать закладки при создании файлов Word для поиска и вставки графиков, и в PowerPoint может быть эквивалент.
Вы также должны посмотреть на пакет DescTools
. Его довольно легко освоить, и он вполне способен, на самом деле проще, чем ReporteRs
.
Вы можете создать шаблон и делать все свои заголовки и записи в шаблоне. Затем вы можете разместить закладки с помощью Insert/Bookmarks, где вы хотите вставить графики R. Вы должны сохранить свои графики в объекте R с тем же именем, что и закладка. Затем каждый раз, когда вы перезапускаете свой код, DescTools начинает с шаблона и вставляет графики в нужные места.
Этот фрагмент запускает процесс, создавая «отчет» из шаблона.
library(DescTools)
library(RDCOMClient)
report <- GetNewWrd(template="C:/Users/[your path to the template.docx")
С помощью этого рабочего процесса вы можете перемещать закладки «текст плюс график» сколько угодно и выполнять обработку текста в Word в шаблоне, а затем R вставлять графики. У меня есть код, который помещает каждый график в список, а в конце R проходит по списку и одновременно создает и вставляет каждый из графиков.
Теперь, можно ли сделать что-то подобное в PowerPoint, я не знаю.