semua orang, maaf untuk gangguan, tetapi saya menjadi cukup baru dengan r menghadapi kesulitan penting: saya ingin membuat peta animasi Russin dengan perubahan pengangguran dengan tahun-tahun yang berbeda, seperti. Pada gambar Anda dapat melihat data selama satu tahun
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")
Hasilnya, yang saya ingin dapatkan adalah sesuatu seperti animasi di sini: http://spatial.ly/2011/02/mapping-londons-population-change-2011-2030/ Namun, saya sering googled, membaca sejumlah tema di http://stackoverflow.com termasuk yang berikut: Membuat Film dari Seri Plot di R , tetapi tidak bisa melakukan hal yang benar.
Terima kasih sebelumnya!
Saya sudah datang dengan sesuatu seperti ini, bisa ada yang bilang di mana kesalahannya:
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")
cartography
r
animation
Ruvin Rafailov
sumber
sumber
Jawaban:
Sejauh ini yang saya lakukan. Anda harus bisa mengetahuinya berdasarkan kode ini. Sekali lagi, karena masalah Anda tidak dapat diulang, saya harus membuat data tiruan untuk menggambarkan solusinya. Salah satu aspek aneh dalam menggunakan spplot adalah karena menggunakan kisi untuk membuat plot Anda perlu membuat objek dan kemudian mencetak objek. Kalau tidak, Anda tidak akan mendapatkan plot.
sumber
Lihatlah paket animasi . Salah satu fungsi yang perlu ditelusuri, yang tidak memerlukan perangkat lunak pihak ketiga, adalah "saveHTML".
Menggunakan fungsi "saveHTML" dalam paket animasi sangat mudah. Berikut adalah contoh kode tempat saya membuat animasi perubahan populasi secara acak. Argumen "expr" mendefinisikan fungsi merencanakan yang ingin Anda sampaikan ke animasi. Seperti yang Anda lihat dalam kode di bawah ini saya menggunakan loop for untuk memplot setiap kolom yang disimulasikan.
Saya mengedit posting untuk memberikan contoh yang lebih relevan berdasarkan kolom poligon.
sumber
Animasi yang Anda tautkan (di bawah) adalah gambar GIF animasi .
Ini pada dasarnya adalah serangkaian gambar yang didaur ulang, yang menciptakan efek animasi. Pikirkan itu seperti mengklik serangkaian slide, satu setiap detik atau lebih.
Yang perlu Anda lakukan untuk membuat animasi adalah:
1) Buat 'bingkai' masing-masing individu yang akan ditampilkan.
2) Buat GIF itu sendiri. Ada beberapa situs web yang akan melakukan ini untuk Anda:
http://www.createagif.net/
http://makeagif.com/
Sebagian besar situs web ini akan memungkinkan Anda untuk mengontrol ukuran dan kecepatan animasi.
Pertanyaan StackOverflow yang Anda tautkan harus memberi Anda semua yang perlu Anda ketahui untuk melakukan tugas ini di R. Perhatikan bahwa Anda harus menginstal paket pihak ke-3 terlebih dahulu.
EDIT : Di bawah ini adalah versi terbaru dari kode dari tautan StackOverflow di atas karena sepertinya ada sedikit kebingungan.
Kode di atas mengambil masing-masing plot yang Anda buat di R dan mengubahnya menjadi animasi dengan mengulangi masing-masing dan menggunakan ImageMagick , yang harus Anda instal.
sumber
Inilah jawabannya, terima kasih kepada Oscar Perpiñán.
sumber