tout le monde, désolé pour le dérangement, mais je suis tout à fait nouveau avec r face à une difficulté cruciale: je veux créer une carte animée de Russin avec des changements de chômage avec différentes années, comme. Sur l'image, vous pouvez voir les données d'un an
require(sp)
require(maptools)
require(RColorBrewer)
require(rgdal)
rus<-url("http://www.filefactory.com/file/4h1hb5c1cw7r/n/RUS_adm1_RData")
print(load(rus))
unempl <- read.delim2(file="C:\\unempl1.txt", header = TRUE,
sep = ";",quote = "", dec=",", stringsAsFactors=F)
gadm_names <-gadm$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], unempl$region,
max.distance = 0.2)[1]
setTxtProgressBar(pb, i) # update progress bar
}
col_no <- as.factor(as.numeric(cut(unempl$data[order],
c(0,2.5,5,7.5,10,15,100))))
levels(col_no) <- c("<2,5%", "2,5-5%", "5-7,5%",
"7,5-10%", "10-15%", ">15%")
gadm$col_no <- col_no
myPalette<-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")
Le résultat que je souhaite obtenir est quelque chose comme une animation ici: http://spatial.ly/2011/02/mapping-londons-population-change-2011-2030/ Cependant, j'ai beaucoup cherché sur Google, lu un certain nombre de thèmes dans http://stackoverflow.com, y compris les éléments suivants: Création d'un film à partir d'une série de tracés dans R , mais ne pouvait toujours pas faire la bonne chose.
Merci d'avance!
Je suis venu avec quelque chose comme ça, quelqu'un peut-il me dire où est l'erreur:
require(animation)
require(sp)
require(RColorBrewer)
require(classInt)
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$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))))
saveHTML(
for(k in 1:2) {
try<-get(paste("col_no_", k, sep = ""))
levels(try) <- c("<2,5%", "2,5-5%", "5-7,5%",
"7,5-10%", "10-15%", ">15%")
gadm$col_no <- try
myPalette<-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")
},img.name = "map", htmlfile = "unrus2.html")
la source
Réponses:
C'est aussi loin que je vais. Vous devriez pouvoir le comprendre à partir de ce code. Encore une fois, comme votre problème n'est pas reproductible, j'ai dû créer des données factices pour illustrer la solution. Un aspect étrange de l'utilisation de spplot est que, puisqu'il utilise un treillis pour créer le tracé, vous devez créer un objet, puis imprimer l'objet. Sinon, vous n'obtenez pas d'intrigue.
la source
Jetez un œil au package d' animation . L'une des fonctions à explorer, qui ne nécessite pas de logiciel tiers, est "saveHTML".
L'utilisation de la fonction "saveHTML" dans le package d'animation est très simple. Voici un exemple de code où je crée une animation d'un changement de population aléatoire. L'argument "expr" définit la fonction de traçage que vous souhaitez transmettre à l'animation. Comme vous pouvez le voir dans le code ci-dessous, j'ai utilisé une boucle for pour tracer chaque colonne simulée.
J'ai édité le post pour fournir un exemple plus pertinent basé sur des colonnes de polygones.
la source
L'animation que vous avez liée (ci-dessous) est une image GIF animée .
C'est essentiellement une série d'images qui sont parcourues, ce qui crée l'effet d'animation. Pensez-y comme en cliquant sur une série de diapositives, une par seconde environ.
Ce que vous devez faire pour créer l'animation est:
1) Créez chaque «cadre» individuel qui sera affiché.
2) Créez le GIF lui-même. Il existe plusieurs sites Web qui le feront pour vous:
http://www.createagif.net/
http://makeagif.com/
La plupart de ces sites Web vous permettront de contrôler la taille et la vitesse de l'animation.
La question StackOverflow à laquelle vous avez lié devrait vous fournir tout ce que vous devez savoir pour effectuer cette tâche dans R. Notez que vous devez d'abord installer un package tiers.
EDIT : Ci-dessous est une version mise à jour du code du lien StackOverflow ci-dessus car il semble y avoir un peu de confusion.
Ce code ci-dessus prend chacun des tracés individuels que vous avez créés dans R et les convertit en une animation en bouclant sur chacun d'eux et en utilisant ImageMagick , que vous devez avoir installé.
la source
Voici la réponse, grâce à Oscar Perpiñán.
la source