0%

Convert Plots to Editable Format in R

推荐一个R包(officer)可以用于生成editable图片在PPT中。这里的editable是指图片中每个元素包括散点、X/Y轴、标签都能修改,常用于图片的再修饰

参考于:Chapter 5 officer for PowerPoint

其实officer是一个Officeverse套件中的一个包,还包括其他大家熟悉的,如:

  • officedown,在rmarkdown中生成word
  • officedown,生成非常好用的表格
  • 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中

officer_func

先用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文件修饰图片啦