R中的动画gadm贴图

R中的动画gadm贴图,r,animation,map,R,Animation,Map,各位,很抱歉打扰你们,但我还是个新手,因为r面临着一个关键的难题:我想绘制一幅生动的俄罗斯地图,显示不同年份失业率的变化,如。首先,我在这里读了一些主题,包括,尽管我仍然不能正确地做这件事。我想要的结果是动画地图一样的,但失业,就像我已经做了一年! 代码如下: require(sp) require(maptools) require(RColorBrewer) require(rgdal) rus<-url("http://www.filefactory.com/file/4h1hb5

各位,很抱歉打扰你们,但我还是个新手,因为r面临着一个关键的难题:我想绘制一幅生动的俄罗斯地图,显示不同年份失业率的变化,如。首先,我在这里读了一些主题,包括,尽管我仍然不能正确地做这件事。我想要的结果是动画地图一样的,但失业,就像我已经做了一年! 代码如下:

require(sp)
require(maptools)
require(RColorBrewer)
require(rgdal)
 rus<-url("http://www.filefactory.com/file/4h1hb5c1cw7r/n/RUS_adm1_RData")
print(load(rus))





  unempl1 <- read.delim2(file="C:\\unempl11.txt", header = TRUE, 
        sep = ";",quote = "", dec=",", stringsAsFactors=F)
unempl2<- read.delim2(file="C:\\unempl12.txt", header = TRUE, 
        sep = ";",quote = "", dec=",", stringsAsFactors=F)

gadm_names <-gadm.prj$NAME_1


total <- length(gadm_names)
pb <- txtProgressBar(min = 0, max = total, style = 3) 

order <- vector()

for (i in 1:total){  

  order[i] <- agrep(gadm_names[i], unempl1$region, 
                     max.distance = 0.2)[1]
 setTxtProgressBar(pb, i)               # update progress bar
}


for (l in 1:total){  

  order[l] <- agrep(gadm_names[l], unempl2$region, 
                     max.distance = 0.2)[1]
 setTxtProgressBar(pb, i)               # update progress bar
}

col_no_1 <- as.factor(as.numeric(cut(unempl1$data[order],
                    c(0,2.5,5,7.5,10,15,100))))

col_no_2<- as.factor(as.numeric(cut(unempl2$data[order],
                    c(0,2.5,5,7.5,10,15,100))))


levels(col_no_1) <- c("<2,5%", "2,5-5%", "5-7,5%",
                    "7,5-10%", "10-15%", ">15%")


gadm.prj$col_no_1 <- col_no_1

myPalette1<-brewer.pal(6,"Purples")


levels(col_no_2) <- c("<2,5%", "2,5-5%", "5-7,5%",
                    "7,5-10%", "10-15%", ">15%")


gadm.prj$col_no_2 <- col_no_2

myPalette2<-brewer.pal(6,"Purples")




proj4.str <- CRS("+init=epsg:3413 +lon_0=105")
gadm.prj <- spTransform(gadm, proj4.str)

spplot(gadm.prj, "col_no", col=grey(.9), col.regions=myPalette,
main="Unemployment in Russia by region")
require(sp)
需要(地图工具)
要求(RColorBrewer)
需要(rgdal)

rus时空
spacetime
包定义了
stplot
方法 图形替代方案。使用其
动画
参数构建 动画首先,您必须定义一个
STFDF
对象(阅读 包文件和 (详情请参阅)

首先导入您的
空间多边形数据框

library(sp)
library(rgdal)
library(spacetime)

rus <- url("http://www.filefactory.com/file/4h1hb5c1cw7r/n/RUS_adm1_RData")
load(rus)
proj4.str <- CRS("+init=epsg:3413 +lon_0=105")
gadm.prj <- spTransform(gadm, proj4.str)
N <- nrow(gadm.prj)
pols <- geometry(gadm.prj)
不幸的是,数据的区域名称不完全匹配 使用多边形的区域名称。因此,前面的代码 将提供
data.frame
,行数少于多边形,下一个 代码将失败。您可能希望在使用此代码之前清理数据 (阅读
STFDF
帮助页面了解如何定义
gadmST
):

png
文件是可以制作的电影的帧 使用
ffmpeg

system('ffmpeg -r 1 -i gadm%02d.png gadm.mp4')

谢谢你的回答,但我想知道我怎么能把多个,相当独立的gadm图放在这里,循环?我将上面的数据添加到easen中reproduction@RuvinRafailovstplot正在为你做循环。我编辑了代码来说明如何生成帧和电影文件。很抱歉,我提出了一些愚蠢的问题,但这是我第一次使用R,更不用说空间数据了,但我不明白的是如何在代码中插入失业数据。我编辑了显示我如何使用数据两年的主要问题,但不知道在我做了所有事情并重新检查了每个名称后如何使用您的方法对其进行动画制作,而使用stplot(gadmST,animate=1,do.repeat=FALSE)时,我在摘要中有错误(27L、28L、29L、30L、31L、32L、33L、34L、36L,:min对系数没有意义我已用您的代码和新更正的数据更新了问题。如果您能帮助排除故障,我将非常感谢
vals1 <- read.csv2('/tmp/unempldata/unempl11.txt')
ord1 <- match(nms, vals1$region)
vals1 <- vals1[ord1,]

vals2 <- read.csv2('/tmp/unempldata/unempl12.txt')
ord2 <- match(nms, vals2$region)
vals2 <- vals2[ord2,]
nDays <- 2
tt <- seq(as.Date('2013-01-01'), by='day', length=nDays)
vals <- data.frame(unempl=rbind(vals1, vals2)[,-1])

gadmST <- STFDF(pols, time=tt, data=vals)
png('gadm%02d.png')
stplot(gadmST, animate=1, do.repeat=FALSE)
dev.off()
system('ffmpeg -r 1 -i gadm%02d.png gadm.mp4')