1

我想将图表导出到 PPT 并使用officer 包来实现相同的目的。但是,图表的默认分辨率很低,我想改变它。我目前正在使用以下电话

    ph_with_gg(p1,type = "chart",res = 1200)

其中 p1 是一个 ggplot 对象。在运行此程序时,我收到以下错误:

    Error in png(filename = file, width = width, height = height, units = 
"in",  : 
  formal argument "res" matched by multiple actual arguments

非常感谢您对此的帮助

4

2 回答 2

9

而不是使用png,对于 PPT 中的高分辨率绘图,您应该使用矢量图形

见下扩展

带包的矢量图形rvg

rvg包带来了一个 API 来生成漂亮的矢量图形,可以嵌入到 PowerPoint 文档或 Excel 工作簿中officer

这个包提供了将ggplots导出为.pptx作为矢量图形的 功能dml()和相应的方法。ph_with()

例子:

library(ggplot2)
library(officer)
library(rvg)
library(magrittr)
data(iris)

read_pptx() %>%
  add_slide(layout='Title and Content',master='Office Theme') %>%
  ph_with('Iris Sepal Dimensions', location = ph_location_type(type="title")) %>%
  ph_with(dml( ggobj=
                 ggplot(iris, aes(x=Sepal.Length,y=Sepal.Width,col=Species)) +
                 geom_point()), location = ph_location_type(type="body")) %>%
  print('iris_presentation.pptx')

作为额外的好处,您将能够在 PowerPoint 中编辑图表。例如,如果您决定将 3 个物种的名称大写,您可以只编辑图表,而不是编辑数据并重新生成幻灯片。(您也可以使绘图不可编辑,但可编辑是默认设置。)

于 2018-03-12T18:29:22.620 回答
1

将绘图保存到代码中的演示文稿中是否重要?

否则使用:

ggsave(filename = file, p1, width = width, height = height, dpi = dpi)

会给你一个你需要的任何分辨率的png..

(前提是文件名以 .png 结尾,并且您将宽度、高度和 dpi 设置为适当的值)

于 2018-03-12T18:22:31.420 回答