将矢量世界贴图添加到R中的光栅动画

将矢量世界贴图添加到R中的光栅动画,r,R,我已经使用光栅软件包的animate功能创建了一个动画,并希望在其上添加一个世界矢量地图 这是我的代码,在设置动画之前,我从月平均温度的3D阵列创建光栅砖: r <- brick(ncols=nb.cols, nrows=nb.rows) r <- setValues(r, monthly.mean) animate(r) r我怀疑您是否可以,但您可以使用动画包创建带有播放/停止/循环控件等的网页动画 您必须编写一个函数,使用光栅层和矢量贴图绘制动画的每一帧,然后将其粘贴到动画包的

我已经使用
光栅
软件包的
animate
功能创建了一个动画,并希望在其上添加一个世界矢量地图

这是我的代码,在设置动画之前,我从月平均温度的3D阵列创建光栅砖:

r <- brick(ncols=nb.cols, nrows=nb.rows)
r <- setValues(r, monthly.mean)
animate(r)

r我怀疑您是否可以,但您可以使用
动画
包创建带有播放/停止/循环控件等的网页动画

您必须编写一个函数,使用光栅层和矢量贴图绘制动画的每一帧,然后将其粘贴到
动画
包的
saveHTML
函数中

示例(未测试):


应该创建一个HTML文件并打开浏览器查看它。要使此示例起作用,您需要在同一坐标系中创建一个
world
矢量对象。在打印光栅时,您可能还需要设置
zlim
,以便比例不会改变。

您可以使用
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)
库(光栅)
#示例数据

谢谢你!两种方法都很有效

对于感兴趣的人,请快速回答:

使用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(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)