Alle, entschuldigen Sie die Störung, aber ich bin ziemlich neu mit einer entscheidenden Schwierigkeit: Ich möchte eine animierte Karte von Russin mit Veränderungen der Arbeitslosigkeit mit unterschiedlichen Jahren erstellen, wie z. Auf dem Bild sehen Sie Daten für ein Jahr
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")
Das Ergebnis, das ich bereit bin zu bekommen, ist so etwas wie eine Animation hier: http://spatial.ly/2011/02/mapping-londons-population-change-2011-2030/ Ich habe jedoch viel gegoogelt und eine Reihe von Themen gelesen in http://stackoverflow.com, einschließlich der folgenden Informationen : Erstellen eines Films aus einer Reihe von Handlungen in R , aber immer noch nicht das Richtige.
Vielen Dank im Voraus!
Ich habe mir so etwas ausgedacht. Kann mir bitte jemand sagen, wo der Fehler liegt:
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")
quelle
Antworten:
Das ist so weit wie ich gehe. Sie sollten es anhand dieses Codes herausfinden können. Da Ihr Problem nicht reproduzierbar ist, musste ich erneut Dummy-Daten erstellen, um die Lösung zu veranschaulichen. Ein seltsamer Aspekt bei der Verwendung von spplot ist, dass Sie ein Objekt erstellen und dann das Objekt drucken müssen, da es Gitter verwendet, um das Diagramm zu erstellen. Andernfalls erhalten Sie kein Grundstück.
quelle
Schauen Sie sich das Animationspaket an. Eine der zu untersuchenden Funktionen, für die keine Software von Drittanbietern erforderlich ist, ist "saveHTML".
Die Verwendung der Funktion "saveHTML" im Animationspaket ist sehr einfach. Hier ist ein Beispielcode, in dem ich eine Animation einer zufälligen Populationsänderung erstelle. Das Argument "expr" definiert die Plotfunktion, die Sie an die Animation übergeben möchten. Wie Sie im folgenden Code sehen können, habe ich eine for-Schleife verwendet, um jede simulierte Spalte zu zeichnen.
Ich habe den Beitrag bearbeitet, um ein relevanteres Beispiel basierend auf Polygonspalten bereitzustellen.
quelle
Die Animation, die Sie (unten) verlinkt haben, ist ein animiertes GIF-Bild .
Es handelt sich im Wesentlichen um eine Reihe von Bildern, die durchlaufen werden, wodurch der Animationseffekt erzeugt wird. Stellen Sie sich vor, Sie klicken sich durch eine Reihe von Folien, eine pro Sekunde oder so.
Um die Animation zu erstellen, müssen Sie Folgendes tun:
1) Erstellen Sie jeden einzelnen 'Frame', der angezeigt wird.
2) Erstellen Sie das GIF selbst. Es gibt mehrere Websites, die dies für Sie tun:
http://www.createagif.net/
http://makeagif.com/
Auf den meisten dieser Websites können Sie die Größe und Geschwindigkeit der Animation steuern.
Die von Ihnen verknüpfte StackOverflow-Frage sollte Ihnen alles bieten, was Sie wissen müssen, um diese Aufgabe in R auszuführen. Beachten Sie, dass Sie zuerst ein Paket eines Drittanbieters installieren müssen.
BEARBEITEN : Unten finden Sie eine aktualisierte Version des Codes aus dem obigen StackOverflow-Link, da ein wenig Verwirrung zu herrschen scheint.
Dieser obige Code verwendet jedes der einzelnen Diagramme, die Sie in R erstellt haben, und konvertiert sie in eine Animation, indem Sie sie durchlaufen und ImageMagick verwenden , das Sie installiert haben müssen.
quelle
Hier ist die Antwort dank Oscar Perpiñán.
quelle