推荐一个R包(officer
)可以用于生成editable图片在PPT中。这里的editable是指图片中每个元素包括散点、X/Y轴、标签都能修改,常用于图片的再修饰
参考于:Chapter 5 officer for PowerPoint
其实officer
是一个Officeverse
套件中的一个包,还包括其他大家熟悉的,如:
officedown
,在rmarkdown中生成wordofficedown
,生成非常好用的表格rvg
,生成矢量图形mschart
,生成macrosoft office的图形
进入正题,假如你有一个R生成的图片,可以是R基础绘图生成的,也可以是ggplot2绘图生成,或者是其他绘图R包生成(但是必须要有ggplot
对象),均可通过以下方式转化成在PPT中的editable图片
首先生成图片并用rvg::dml
函数封装成矢量图以便后续在PPT中插入到各页slides中
library(rvg)
p1 <- dml(plot(1:10))
library(ggplot2)
g2 <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point() +
theme_classic()
p2 <- dml(ggobj = g2)
library(survival)
library(survminer)
g3 <- survfit(Surv(time, status) ~ sex, data = lung) %>%
ggsurvplot(data = lung)
p3 <- dml(ggobj = g3$plot)
矢量图的对象生成后,接着根据下图的步骤添加到PPT中
先用read_pptx
根据默认模板生成一个空的PPT文件;然后用add_slide
生成一页空的slide;最后用ph_with
将矢量图对象插入其中。其中所涉及到的一些参数,需要先了解office PowerPoint的一些基本组件,可阅读:2.2 PowerPoint presentation properties
library(officer)
doc <- read_pptx()
doc <- add_slide(doc, layout = "Title and Content", master = "Office Theme")
doc <- ph_with(doc, p1, location = ph_location_fullsize() )
doc <- add_slide(doc, layout = "Title and Content", master = "Office Theme")
doc <- ph_with(doc, p2, location = ph_location_fullsize() )
doc <- add_slide(doc, layout = "Title and Content", master = "Office Theme")
doc <- ph_with(doc, p3, location = ph_location_fullsize() )
print(doc, target = "test.pptx")
最后即可打开test.pptx
文件修饰图片啦