2015-05-02 74 views
0

今天,當試圖製作一個R腳本來繪製一個文件夾中的幾個地圖時,我遇到了一個我無法理解和/或修復的情況。我寫了下面的代碼,這將是在31個週期(62周)期間每2周繪製一張地圖的腳本,如果我單獨運行它(沒有循環),腳本就可以正常工作,但是我儘快將循環放在那裏將不會創建任何文件並且腳本立即結束(並且所有變量都會像運行一樣更改)。在這個循環中繪製R地圖有什麼問題?

請注意,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() 
} 

回答

2

這是FAQ 7.22(但與GGPLOT2圖表不太明顯,因爲它們不是在問題中提到,只有答案)。

基本上ggplot2圖(和點陣圖,和其他一些)實際上並沒有繪製,直到它們被編輯爲print。在循環之外,R中的自動打印爲你做了這個,但自動打印不會發生在循環內部,所以R從未被告知實際創建這些圖。

解決方案是將創建圖形的線條包裝在print()plot()中。

+0

謝謝,這工作,我試圖與另一個繪圖系統(不同於ggplot2),他們工作正常,無需print()函數調用。這是我在這種情況下做得不好,非常感謝,我會注意到這一點。乾杯 – antonbalboa