R:使用大量数据以更快的方式将图形导出为.pngs?

时间:2014-09-05 11:37:16

标签: r performance export png

我正在循环中绘制R中的大量数据,并使用png()将图表导出为300dpi分辨率的png。凭借我的所有数据,我最终创造了大约2000个地块。执行大约需要15分钟。使用postscript()导出到postscript时,处理整个数据大约需要20秒。生成的.png的大致文件大小约为300KB,而.ps的大小约为5KB

有人知道比这更快的png导出方法吗?谢谢你的建议。

# Plot NAME and ID as filename
for(i in 1:length(ind)){
  png(names(ind[i]), width=3358, height=2329, res=300)
  # if postscript; uncomment following line 
  # postscript(names(ind[i]))
  par(mar=c(6,8,6,5))
  plot(ind[[i]][,c('YEAR','VALUE')],
       type='b',
       main=ind[[i]][1,'NAME'],
       xlab="Time [Years]", 
       ylab="Value [mm]")

  dev.off() 
}

1 个答案:

答案 0 :(得分:2)

所以可重现的例子是:

dir.create("DummyPlots")
setwd("DummyPlots")

system.time( for(i in 1:500)
  {  png(paste0("Image", i, ".png")) ; plot( i ) ; dev.off()  })
# 7.5 s

这是一种更快的方式:

system.time(  {png("FastImage%03d.png")
for(i in 1:500)
plot( i )
dev.off()  })
# 5.2 s

setwd("..")
unlink("DummyPlots", recursive=TRUE)