6

我有一个 pptx 格式的演示文稿,我需要经常使用我使用 R 脚本生成的图表来更新它。我想自动替换图表,而不必在屏幕之间复制和粘贴很多次。我一直在使用 ReporteRs 包,它看起来很有希望,但我无法弄清楚如何简单地替换演示文稿中已经存在的图表。ReporteRs 上的所有文档都表明您必须添加一张新幻灯片,然后将图表放在该新幻灯片上。有没有办法说,'删除幻灯片 7 上的图表并用图表 XXX 替换它?ReporteRs 是最好的包吗?

4

3 回答 3

3

根据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' )

如下所述,维护者已修复该错误。您现在可以替换幻灯片。正如您所注意到的,这确实替换了整个幻灯片。虽然一开始有点不方便,但您可以轻松地设置脚本为幻灯片添加相同的标题、文本等,并且可以轻松地多次复制幻灯片。有了这个,您还可以在发生变化时快速更改任何文本(值得深思)。

于 2015-02-02T21:37:32.357 回答
2

尝试:

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)
于 2015-02-04T16:58:59.080 回答
1

使用ReporteRs(以前的 R2DOCX),我相信您可以在创建Word文件时使用书签来定位和插入绘图,并且在PowerPoint中可能有一个等价物。

您还应该查看DescTools包装。它非常容易学习并且功能强大,实际上比ReporteRs.

您可以创建一个模板并在模板中完成所有标题和书写。然后,您可以将带有插入/书签的书签放置在要插入 R 绘图的位置。您必须将绘图保存到名称与书签名称相同的 R 对象中。然后,每次重新运行代码时,DescTools 都会从模板开始,并将绘图插入正确的位置。

此片段通过从模板创建“报告”来启动该过程。

library(DescTools)
library(RDCOMClient) 
report <- GetNewWrd(template="C:/Users/[your path to the template.docx")

使用此工作流程,您可以随意移动文本加绘图书签,并在模板中的 Word 中进行文字处理,然后让 R 插入绘图。我有将每个图放在一个列表中的代码,最后 R 遍历该列表并创建和插入每个图。

现在,你是否可以在 PowerPoint 中做类似的事情,我不知道。

于 2015-02-02T20:48:08.020 回答