Skip to content

Instantly share code, notes, and snippets.

@adamhsparks
Forked from halhen/europe.R
Created April 24, 2017 11:08
Show Gist options
  • Save adamhsparks/dcf125e0d04a4a09fac7b59a9c023c64 to your computer and use it in GitHub Desktop.
Save adamhsparks/dcf125e0d04a4a09fac7b59a9c023c64 to your computer and use it in GitHub Desktop.
# data from http://ec.europa.eu/eurostat/web/gisco/geodata/reference-data/population-distribution-demography/geostat
# Originally seen at http://spatial.ly/2014/08/population-lines/
# So, this blew up on both Reddit and Twitter. Two bugs fixed (southern Spain was a mess,
# and some countries where missing -- measure twice, submit once, damnit), and two silly superflous lines removed after
# @hadleywickham pointed that out. The result of the code below can be seen at http://imgur.com/nhVJqwk
library(tidyverse)
read_csv('../data/geostat-2011/GEOSTAT_grid_POP_1K_2011_V2_0_1.csv') %>%
rbind(read_csv('../data/geostat-2011/JRC-GHSL_AIT-grid-POP_1K_2011.csv') %>%
mutate(TOT_P_CON_DT='')) %>%
mutate(lat = as.numeric(gsub('.*N([0-9]+)[EW].*', '\\1', GRD_ID))/100,
lng = as.numeric(gsub('.*[EW]([0-9]+)', '\\1', GRD_ID)) * ifelse(gsub('.*([EW]).*', '\\1', GRD_ID) == 'W', -1, 1) / 100) %>%
filter(lng > 25, lng < 60) %>%
group_by(lat=round(lat, 1), lng=round(lng, 1)) %>%
summarize(value = sum(TOT_P, na.rm=TRUE)) %>%
ungroup() %>%
complete(lat, lng) %>%
ggplot(aes(lng, lat + 5*(value/max(value, na.rm=TRUE)))) +
geom_line(size=0.4, alpha=0.8, color='#5A3E37', aes(group=lat), na.rm=TRUE) +
ggthemes::theme_map() +
coord_equal(0.9)
ggsave('/tmp/europe.png', width=10, height=10)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment