我有一个看起来像这样的栅格:
library(raster)
# Create data
set.seed(123)
r <- raster(ncols=10, nrows=10)
r[] <- sample(10:360, ncell(r),replace = T)
crs(r) <- "+proj=lcc +lat_1=48 +lat_2=33 +lon_0=-100 +ellps=WGS84"
projection(r)
plot(r)
Run Code Online (Sandbox Code Playgroud)
对于每个网格,栅格包含一年中的某一天作为值.我正在寻找一种生成地图(可能是动画)的方法,从第1天到第365天,当地图到达与网格日相匹配的那天时,网格应该变为绿色.
我很抱歉,但由于我不知道R中是否有可能这样做,我无法生产我所尝试过的东西.
谢谢
编辑
我能想到的一种方法是运行这样的循环:
for(i in 2:365){
breakpoints <- c(1,i,365)
colors <- c("green4","white")
plot(r, breaks = breakpoints,col=colors)
}
Run Code Online (Sandbox Code Playgroud)
将每个循环的ouptut保存为.png,然后开发它的.gif图像
使用循环,可以reclassify将栅格转换为二进制栅格(如果小于或等于日,则为0;如果大于或等于日,则为1)。然后,您可以使用该animation包创建gif。
library(animation)
ani.options(interval=.05)
saveGIF({
for (i in 1:365){
m <- c(1, i, 0, i, 365, 1)
rclmat <- matrix(m, ncol=3, byrow=TRUE)
rc <- reclassify(r, rclmat)
plot(rc, col=c("green3", "white"), legend=FALSE, main = paste("Day", i))
}
})
Run Code Online (Sandbox Code Playgroud)
演示(200天)