在具有给定大小的R幻灯片中绘制ggplot2图-R

时间:2019-01-17 12:38:26

标签: r ggplot2 powerpoint officer

我正在尝试使用ggplot2软件包在幻灯片幻灯片中绘制officer图。我可以做到这一点(直接在ppt中打印ggplot2,但是由于我需要增加ggplot2图的大小(对于ppt幻灯片),所以我知道{{1 }}图形取决于窗口的大小(在ggplot2中)或您将其设置为好像要导出窗口一样,我正在寻找一种方法(1)以给定大小导出ggplot2图形(例如:RStudio),(2)从ppt代码导入/读取:

height=5, width=8

library(officer) library(devEMF) library(magrittr) library(ggplot2) t <- "../example.pptx" filename <- gg read_pptx() %>% add_slide(layout = "Title and Content", master = "Office Theme") %>% ph_with_img(src = filename, width = 6, height = 4, type = "body") %>% print(target = t) 是ggplot2中的任何图(实际上并不重要)。 gg是输出文件地址。

ph_with_img

PowerPoint documents and graphics

PD:如果有一些我不知道但仍然找不到的包/命令,可以在其中编辑ggplot2的大小,则所有这些都是不必要的。

3 个答案:

答案 0 :(得分:2)

我成功地将ggplot2图另存为.png,然后将该文件调用到ph_with_img中。有点回旋处,但可以。您还可以将图形另存为?tempfile,然后另存为?unlink,但我有点喜欢在图形文件夹中保存文件。

ggplot() +
  (code for my ggplot)

ggsave("../thisplot.png", width = 6, height = 4)

read_pptx() %>% 
  add_slide(layout = "Title and Content", master = "Office Theme") %>% 
  ph_with_img(src = "../thisplot.png", width = 6, height = 4, type = "body") %>% 
  print(target = t)

答案 1 :(得分:1)

我刚刚制作了一个基于export的新软件包officer,可以轻松地使一个人使用命令graph2ppt()来执行此操作,并且可以很好地以矢量格式而不是位图导出在上面发布的其他答案中,例如

install.packages("export")
library(export)
library(ggplot2)
qplot(Sepal.Length, Petal.Length, data = iris, color = Species, 
      size = Petal.Width, alpha = I(0.7))     
graph2ppt(file="plots.pptx", width=6, height=5) 

答案 2 :(得分:1)

下面显示了如何使用officer 0.3.11将ggplot对象创建和导出为矢量图形直接导出到powerpoint。关键是将ph_withlocation = ph_location一起使用。这使您可以设置对象的位置和大小。


library(ggplot2)
library(dplyr, warn.conflicts = FALSE)
library(officer)
library(rvg)

t <- "example.pptx"

fig_gg <- ggplot(mtcars, aes(x=wt, y=mpg)) +
  geom_point()

fig_vg <- dml(ggobj = fig_gg)

read_pptx() %>% 
  add_slide(layout = "Title Only", master = "Office Theme") %>% 
  ph_with(fig_vg, location = ph_location(left = .5, top = 1.3, height = 5, width = 5)) %>% 
  print(t)

reprex package(v0.3.0)于2020-06-12创建