1

我正在尝试ggplot2在带有officer包装的电源点幻灯片中绘制图表。我实际上可以做到(ggplot2直接在 ppt 中打印),但是因为我需要增加ggplot2图表的大小(对于 ppt 幻灯片),并且我知道ggplot2图表取决于窗口的大小(in RStudio)或无论您将其设置为如何导出它,我都在寻找一种方法来(1)导出具有给定大小的 ggplot2 图(例如:height=5, width=8),(2)从 ppt 代码导入/读取:

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)

gg是来自 ggplot2 的任何情节(实际上并不重要)。t是输出文件地址。

ph_with_img

PowerPoint 文档和图形

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

4

3 回答 3

4

我刚刚制作了一个基于它的新包exportofficer可以轻松地使用命令执行此操作,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) 
于 2019-03-26T03:07:29.610 回答
3

我首先成功地将ggplot2图形保存为 .png,然后将该文件调用到ph_with_img. 有点迂回,但它的工作原理。您也可以将图表另存为 a?tempfile和 then ?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)
于 2019-01-17T13:00:28.963 回答
2

下面展示了如何创建一个 ggplot 对象并将其作为矢量图形直接导出到officer 0.3.11. 关键是ph_with配合使用location = 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 包(v0.3.0)于 2020-06-12 创建

于 2020-06-11T22:45:48.187 回答