将弹性表,ggplot,文本和图像组合到一个网格对象中,然后将其添加到PowerPoint幻灯片中

时间:2018-07-19 10:03:19

标签: r powerpoint grid-layout flextable officer

我想知道是否可以将可伸缩表/常规表,ggplot,文本和图像组合到一个网格对象中,然后将该网格放在PowerPoint幻灯片中吗?

这对于在幻灯片幻灯片中布置对象非常有用,而不必强制总是计算每个对象的坐标。

我看到了一个通过grid.arrange(r - Why can't I send a group of plots in a grid to PowerPoint with OfficeR?)组合和排列ggplot对象的示例,但是如果我还想添加一个flextable或一个新的文本段落,它将不再起作用。

是否可以通过网格布局来改进表示层?

谢谢!

1 个答案:

答案 0 :(得分:1)

0.5.3版的flextable起,这是可能的。有很多方法可以实现这一点,下面是一个示例:

library(ggplot2)
library(grid)
library(cowplot)
library(dplyr)
# remotes::install_github("davidgohel/flextable")
library(flextable)

gg1 <- ggplot(iris, aes(Sepal.Length, Petal.Length, color = Species) ) + geom_point()

ft_raster <- iris %>% group_by(Species) %>% 
  summarise_all(median) %>% 
  flextable() %>% autofit() %>% 
  as_raster()

gg2 <- ggplot() + 
  theme_void() + 
  annotation_custom(rasterGrob(ft_raster), xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=Inf)

cowplot::plot_grid(gg1, gg2, nrow = 2, ncol = 1, rel_heights = c(3, 1) )

以及下面的结果

enter image description here