【问题标题】:How to return gridExtra as a plain plot object from a function如何从函数返回 gridExtra 作为普通绘图对象
【发布时间】:2017-10-23 07:09:26
【问题描述】:

我有以下代码,旨在基于 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 没有被创建。 正确的做法是什么?

【问题讨论】:

    标签: r plot gridextra


    【解决方案1】:

    您必须在设备内调用grid.draw 才能创建文件。请注意out_plot &lt;- 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()
    

    【讨论】:

      【解决方案2】:

      绘制后可以返回对象,

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

      【讨论】:

        猜你喜欢
        • 2013-02-02
        • 1970-01-01
        • 2019-03-01
        • 2020-03-14
        • 1970-01-01
        • 1970-01-01
        • 2015-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多