Skip to content

Instantly share code, notes, and snippets.

@mdlincoln
Last active December 18, 2015 14:26
Show Gist options
  • Save mdlincoln/b5d1045b0d48d769b565 to your computer and use it in GitHub Desktop.
Save mdlincoln/b5d1045b0d48d769b565 to your computer and use it in GitHub Desktop.
Create an animated GIF of European urban population 1500-1800
library(devtools)
install_github("mdlincoln/europop")
library(europop)
library(dplyr)
library(rgdal)
library(ggplot2)
library(animation)
# Get the coastline shapefile (derived from OSM)
eur_shp <- readOGR(system.file("extdata", "eur_coast", package = "europop"), layer = "coastlines_z4") %>% spTransform(CRS("+proj=longlat +datum=WGS84"))
eur_df <- fortify(eur_shp)
# Join city coordinates to the population metrics
pop_points <- europop %>% inner_join(city_coords, by = "city")
saveGIF({
for(i in seq(1500, 1800, 50)) {
# Get the points for this year
subpop <- pop_points %>% filter(year == i)
p <- ggplot() +
geom_map(data = eur_df, map = eur_df, aes(x = long, y = lat, group = group, map_id = id), fill = "gray", color = "gray") +
geom_point(data = subpop, aes(x = lon, y = lat, color = population, size = population)) +
coord_map() +
facet_wrap(~ year) +
theme_minimal() +
theme(legend.position = "none") +
ylim(min(pop_points$lat), max(pop_points$lat)) +
xlim(min(pop_points$lon), max(pop_points$lon))
plot(p)
}
}, movie.name = "europop.gif", interval = 0.5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment