我創建了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