PNG数字为空的原因和解决方案

时间:2013-04-03 16:54:05

标签: r

我在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时不会发生这种情况。有谁可以告诉我为什么以及如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

问题在于你调用的绘图命令比你用par准备的更多(mfrow = c(nc,nc))

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

答案 1 :(得分:0)

如果您使用的是 png("PNG_FILE.png") g <- ggplot(....) print(g) dev.off() ,请使用此模板:

{{1}}