Take a look at the animation package. One of the functions worth exploring, that does not require 3rd party software, is "saveHTML".
Using the "saveHTML" function in the animation package is very straight forward. Here is example code where I create an animation of a randomized population change. The "expr" argument defines the plotting function you want to pass to the animation. As you can see in the below code I used a for loop to plot each simulated column.
require(animation)
require(sp)
require(RColorBrewer)
require(classInt)
# Load your data and add random population change column
load(url("http://www.gadm.org/data/rda/GBR_adm2.RData"))
for( i in 1:10 ) {
gadm@data[paste("Year",i, sep="")] <- runif(dim(gadm)[1],0,1)
}
# Create HTML animation using for loop for each simulated column
saveHTML(
for(x in names(gadm@data)[19:28]) {
ani.options(interval = 0.5)
plotvar <- gadm@data[,x]
nclr <- 9
plotclr <- rev(brewer.pal(nclr,"BuPu"))
cuts <- classIntervals(plotvar, style="fixed",
fixedBreaks=c(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,1))
colcode <- findColours(cuts, plotclr)
plot(gadm, col=colcode, border=NA, ylim=c(bbox(gadm)[,1][2], bbox(gadm)[,2][2]),
xlim=c(bbox(gadm)[,1][1], bbox(gadm)[,2][1]))
text(min(bbox(gadm)[1]), min(bbox(gadm)[2]), paste("Population Change",x,sep=" "))
box()
legend("topleft", legend=c("0-10%","10-20%","20-30%","30-40%","40-50%",
"50-60%","60-70%","70-80%","80-100%"),
fill=attr(colcode, "palette"), cex=0.6, bty="n")
ani.pause()
},
img.name="RandPopChange", htmlfile="SimPopChange.html",
single.opts = "'controls': ['first', 'previous', 'play', 'next', 'last', 'loop', 'speed'], 'delayMin': 0",
description=c("Random population change:"))
I edited the post to provide a more relevant example based on polygon columns.
Best Answer
Here are two options:
QGIS - Animating Time Series Data
ArcGIS - Visualize temporal data using the time slider