我创建了animate
函数的动画,其中包含raster
包,并且希望在其上添加世界矢量地图。在R中添加矢量世界地图到光栅动画
这是我的代码,我动画之前创建一个从月平均温度的三维阵列光栅砖:
r <- brick(ncols=nb.cols, nrows=nb.rows)
r <- setValues(r, monthly.mean)
animate(r)
光栅动画作品不错,但我怎么能加入世界矢量地图?
非常感谢
我创建了animate
函数的动画,其中包含raster
包,并且希望在其上添加世界矢量地图。在R中添加矢量世界地图到光栅动画
这是我的代码,我动画之前创建一个从月平均温度的三维阵列光栅砖:
r <- brick(ncols=nb.cols, nrows=nb.rows)
r <- setValues(r, monthly.mean)
animate(r)
光栅动画作品不错,但我怎么能加入世界矢量地图?
非常感谢
可以使用addfun
参数
library(raster)
# example data
r <- raster(nrows=10, ncols=10)
s <- stack(replicate(10, setValues(r, runif(ncell(r)))))
xy <- cbind(-180 + runif(10) * 360, -90 + runif(10) * 180)
# create a function to add some vector data
fun <- function() {
points(xy, cex=2)
points(xy, pch=3, col='red')
}
# use it
animate(s, addfun=fun)
我怀疑你可以,但你可以使用animation
包来创建播放/停止/循环控制等网页动画
你将不得不编写一个函数来绘制您的动画的每一帧都带有栅格图层和矢量地图,然后您将其粘贴在animation
包的saveHTML
函数中。
例(未测试):
saveHTML({ for(f in 1:12){plot(r[[i]]; plot(world, add=TRUE)} })
应该创建一个HTML文件,然后打开浏览器来查看它。为了使这个例子工作,你需要在同一坐标系中有一个world
矢量对象。绘制栅格时,您可能还需要设置zlim
,以便缩放不会更改。
谢谢!这两种方法都很有魅力!
一个快速的回答对于那些有兴趣:
随着saveHTML:
require(animation)
require(rgdal)
require(raster)
countries <- readOGR(dsn=".", layer="Countries") # Shapefile of world countries
r <- brick(ncols=144, nrows=72)
r <- setValues(r, monthly.mean) # monthly.mean is a 3D array 144x72x420
saveHTML({
for(m in 1:420) { # serie of 420 months
plot(r[[m]], zlim=c(min, max)) # min, max of the legend
plot(countries, add=T)
}
})
乐趣:
require(rgdal)
require(raster)
countries <- readOGR(dsn=".", layer="Countries")
r <- brick(ncols=144, nrows=72)
r <- setValues(r, monthly.mean)
fun <- function() {
plot(countries, add=T)
}
animate(r, zlim=c(min, max), addfun=fun)
我想这一切。谢谢! – Marc