如何将gridExtra作为普通绘图对象从函数返回

时间:2017-10-23 07:09:27

标签: r plot gridextra

我有以下代码,目的是基于gridExtra制作一个tableGrob图并将其作为函数中的对象返回

library(gridExtra)

myfunc <- function () {
  d <- head(iris, 3)
  g <- tableGrob(d)
  grid.draw(g)
}

但是为什么我这样称呼它

out_plot <- myfunc()
png(file='my_out_file.png', width=800, height=800)
out_plot
dev.off()

out_plot内部没有任何内容,并且未创建my_out_file.png。 什么是正确的方法?

2 个答案:

答案 0 :(得分:2)

您必须在设备中调用grid.draw才能创建文件。请注意out_plot <- myfunc()如何在活动(在我的情况下是一个RStudio)设备中创建一个绘图。您的函数返回NULL因为grid.draw返回的内容,请检查str(out_plot)

因此,只需在png设备中调用您的函数:

library(gridExtra)
library(grid)

myfunc <- function () {
  d <- head(iris, 3)
  g <- tableGrob(d)
  grid.draw(g)
}

png(file='my_out_file.png', width=800, height=800)
myfunc()
dev.off()

答案 1 :(得分:1)

您可以在绘制后返回对象,

myfunc <- function () {
  d <- head(iris, 3)
  g <- tableGrob(d)
  grid.draw(g)
  invisible(g)
}