eoffice 来告诉你不会用 AIPS 没有关系,直接用 ppt 就可以了。

1.安装

devtools::install_github("guokai8/eoffice")
## eoffice is available on CRAN

install.packages("eoffice")

  在 Window 上使用上面代码很顺利的就装上了,但在服务器上安装就报错了,具体报错如下。

ERROR: dependency ‘magick’ is not available for package ‘eoffice’

  很明显不就是缺了 magick 包吗,缺啥按啥是基本指导思想,然后运行 install.packages("eoffice"),果然事情不会那么简单,依旧报错,不过这次报错中有一些比较有用的信息。

--------------------------- [ANTICONF] --------------------------------
Configuration failed to find the Magick++ library. Try installing:
 - deb: libmagick++-dev (Debian, Ubuntu)
 - rpm: ImageMagick-c++-devel (Fedora, CentOS, RHEL)
 - csw: imagemagick_dev (Solaris)
 - brew imagemagick@6 (MacOS)
For Ubuntu versions Trusty (14.04) and Xenial (16.04) use our PPA:
   sudo add-apt-repository -y ppa:cran/imagemagick
   sudo apt-get update
   sudo apt-get install -y libmagick++-dev
If Magick++ is already installed, check that 'pkg-config' is in your
PATH and PKG_CONFIG_PATH contains a Magick++.pc file. If pkg-config
is unavailable you can set INCLUDE_DIR and LIB_DIR manually via:
R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...'
-------------------------- [ERROR MESSAGE] ---------------------------
<stdin>:1:10: fatal error: Magick++.h: No such file or directory
compilation terminated.
--------------------------------------------------------------------

  上面说的很清楚,是服务器里面缺了库,还亲切的给出了不同系统对应需要安装的库。因为服务器系统是 Ubuntu,所以就先试着安装一下 libmagick++-dev ,这我也不会装呀,那就赶紧谷歌一下 libmagic-dev install ubuntu,解决方案如下:

sudo apt-get update
sudo apt-get install libmagic-dev

  随后再依次安装 magickeoffice 就可以了。

2.使用说明

  看这个的包最初目是将图片保存为可编辑的 ppt,但是里面还封装了一些比较实用的功能所以就顺带一起说了。

2.1 保存图片到 office

  使用 topptx/todocx 这两个函数来分别实现保存到 pptdoc 中,保存到 ppt 中的图片,取消组合之后就可以随意修改了。
  topptx/todocx 两个函数的参数比较简单,也完全一致,下面是简单说明。

topptx(
  figure = p,
  filename = "mtcars.pptx",
  title = "test1",
  width = 6,
  height = 6,
  units = "in",
  append = T, # 是否可以在文件中继续添加其他图片

  devsize = F # 是否使用图片在Rstudio中所显示的尺寸

)

2.1.1 保存非 ggplot object

# 基础作图函数

plot(mtcars$mpg, mtcars$disp)
topptx(filename = "mtcars.pptx",append = T)

# 其他作图的包

library(ComplexHeatmap)
column_ha = HeatmapAnnotation(foo1 = runif(10), bar1 = anno_barplot(runif(10)))
row_ha = rowAnnotation(foo2 = runif(10), bar2 = anno_barplot(runif(10)))
Heatmap(matrix(rnorm(100), 10), name = "mat", top_annotation = column_ha, right_annotation = row_ha)
topptx(filename = "ComplexHeatmap.pptx")

## ggplot2作的图

ggplot(mtcars, aes(mpg, disp, color = factor(cyl))) + geom_point()
topptx(filename = "mtcars.pptx",append = T,title = "ggplot2")

2.1.2 保存 ggplot object

  如果想要在循环中使用,可以使用如下代码来实现。

p <- ggplot(mtcars, aes(mpg, disp, color = factor(cyl))) + geom_point()
topptx(p, filename = "mtcars.pptx", width = 6, height = 4,append = T,title = "loop code")

2.1.3 转化成 ggplot object

  如果图片保存失败,可以使用 convertplot 将图片转换成 ggplot object再保存。

p <- convertplot(plot(1:10))
tofigure(p, filename = "test.pdf")
topptx(p, filename = "test.pptx")

2.2 保存表格到 office

  使用 totable 将表格保存到 office 中,其中参数 format 不填写的话会自动根据文件名后缀进行识别,支持 pptx 和 docx 两种格式。

totable(head(mtcars), filename = "mtcars.table.docx")
totable(head(mtcars), filename = "mtcars.table.pptx")

2.3 读取 office 中数据

tabs <- eoffice::inoffice(filename = "mtcars.table.pptx", header = TRUE)
tabs <- eoffice::inoffice(filename = "mtcars.table.docx", header = TRUE)

2.4 保存为 html 格式文件

  这个功能比较亮眼,tohtml 是基于 **plotly **来导出交互式的 html 的图片。

tohtml(p, filename = "mtcars.html", save = TRUE)

2.5 保存为其他格式图片

tofigure(ggplot(mtcars, aes(mpg, disp, color = factor(cyl))) + geom_point(),filename = "mtcars.pdf")
tofigure(ggplot(mtcars, aes(mpg, disp, color = factor(cyl))) + geom_point(),filename = "mtcars.eps")

参考资料
1.eoffice github
2.呈现数据交给R,修图只会PPT!