绘制 R 地图的循环有什么问题?

What is wrong in this loop to plot R maps?

今天在尝试制作一个 R 脚本来绘制一个文件夹中的多张地图时,我遇到了一个我无法理解的情况 and/or 修复。我写了下面的代码,这将是在 31 个周期(62 周)期间每 2 周绘制 1 张地图的脚本,如果我 运行 单独使用(没有循环),脚本工作正常但我很快放置循环,将不会创建任何文件,脚本会立即结束(并且所有变量都会更改,就好像它有 运行)。

请注意,raw 是一个数据集(正如我所说,如果循环不存在,代码会工作,仅进行 1 次迭代),al1 也是定义的地图定义。

date_actual <- as.Date("2012-01-01") 
i <- 0
for(i in 1:31){
  conc <- subset(raw,(raw$Day >= date_actual & raw$Day < (14+date_actual))) 
  png(filename=paste("map_",date_actual,".png",sep=""), width = 1920, height = 1080, units = "px")
  ggmap(al1) + geom_point(data = conc, aes(x = Lon, y = Lat, size = Mag), colour="red", alpha = .5) + scale_size_area(max_size=8, name="Magnitude",breaks=c(1,3,5,7,9)) + ggtitle(paste("",format(date_actual, "%Y-%U"),sep="")) + theme(plot.title = element_text(lineheight=1.2, face="bold"))
  date_actual <- date_actual + 14
  dev.off()
}

这是FAQ 7.22(但在ggplot2图表中不太明显,因为问题中没有提到它们,只有答案)。

基本上 ggplot2 图(和点阵图,以及其他一些)在 printed 之前不会真正绘制。在循环之外,R 中的自动打印会为您完成此操作,但自动打印不会在循环内部发生,因此 R 从未被告知要实际创建绘图。

解决方案是在 print()plot() 中包裹创建图形的线。