在函数内调用时使用 png 函数不起作用

2024-01-03

我有一个函数可以执行一些操作,然后根据条件进行绘图:

f <- function(n) {
  rand <- rnorm(n)
  no   <- seq_len(n)
  df   <- data.frame(no=no, rand=rand)
  if (n > 10) {
    png("plot.png")
    p <- ggplot(df)
    p + geom_point(aes(x=no, y=rand))
    dev.off()
  }
}

f(11)

最后我得到一个空白的 png 文件。这里发生了什么?


根据回复,有两种解决方案:

library(ggplot2)
f <- function(n) {
  rand <- rnorm(n)
  no   <- seq_len(n)
  df   <- data.frame(no=no, rand=rand)
  if (n > 10) {
    png("plot.png")
    print({
      p <- ggplot(df)
      p + geom_point(aes(x=no, y=rand))
    })
    dev.off()    
  }
}

f(11)

注意:我知道我需要使用print(),但我尝试的方法不起作用,因为它没有放置在正确的位置。

另外,我也尝试过ggsave之前的选项,但这也不起作用。当然,现在它也能工作了。它似乎也比使用具有更好的分辨率png():

library(ggplot2)
f <- function(n) {
  rand <- rnorm(n)
  no   <- seq_len(n)
  df   <- data.frame(no=no, rand=rand)
  if (n > 10) {
    p <- ggplot(df)
    p + geom_point(aes(x=no, y=rand))
    ggsave(file="plot.png")
  }
}

f(11)

谢谢大家。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在函数内调用时使用 png 函数不起作用 的相关文章

随机推荐