0

我在 R 中有以下功能

pairwise.yearly.plot <- function(data.source, data.target, suffix=".PR", years=2003:2007) {
  # plot pairwise year data for time series representation of data                                                                                                                                                                 
  first <- years[1]
  last <- years[length(years)]
  nc <- last - first #2007-2003                                                                                                                                                                                                    
  par(mfrow=c(nc, nc))
  for(y1 in years) {
    for(y2 in years) {
      if(y1 < y2) {
        year.source <- num.to.colname(y1);
        if(suffix == ".PE") {
          year.target <- paste(num.to.colname(y1), y2, sep=".");
        } else {
          year.target <- paste(num.to.colname(y2), suffix, sep="");
        }
        plot(data.source[[year.source]], data.target[[year.target]], xlab=y1, ylab=paste(y2, suffix,sep=""))
      }
      else if(y1 > y2) {
        frame()
      }
    }
  }
}

当我调用它时:

png("output.png")
pairwise.yearly.plot(foo, bar)
dev.off()

我得到一个空的 png 文件。当我将图形设备设置为 pdf 时,不会发生这种情况。谁能告诉我为什么以及如何解决这个问题?

4

2 回答 2

2

问题是您调用的绘图命令比使用 par(mfrow=c(nc, nc)) 准备的要多

如果 nc 为 4,那么您准备 16 个单元格进行绘制,但循环占 25 个操作。如果这些额外操作中的最后一个是 frame() 你最终会得到一张空白图片。

于 2013-04-03T19:25:58.803 回答
0

如果您正在使用ggplot,请使用此模板:

png("PNG_FILE.png")
g <- ggplot(....)
print(g)
dev.off()
于 2021-06-20T16:18:05.730 回答