Gridded population numbers in Europe 2017. Bubble area scaled to absolute population number. Data: Eurostat (demo_r_pjanaggr3)
Update 2018-07-31: I’ve unintentionally used a non-equal-area grid when creating these bubble-grid maps. Here’s how to avoid that mistake and create an equal-area grid
I want to show the population density across Europe in a stylized fashion using a regular grid of bubbles sized according to population counts. Using circle-area instead of color as visual encoding I hope to achieve a more direct depiction of magnitude differences compared to a choropleth map. But really, I’m just messing around with
sf packages. Let’s do a bubble-grid-map™©.
First I download population counts
eurostat::get_eurostat() and regional geodata
eurostat::get_eurostat_geospatial() then I divide the geographical surface into a regular grid of cells
sf::st_make_grid(). Next, I merge population data and geographic data
dplyr::left_join() and calculate the area-weighted average population count under each grid cell
sf::st_interpolate_aw(). After grabbing the centroid coordinates of each cell
sf::st_centroid() and converting them to numeric columns
sf::st_coordinates() I’m ready to plot the results with ggplot. Mind you that I’m using simple
ggplot2::geom_point() instead of the new
ggplot2::geom_sf() as the latter has severe performance issues when drawing points (see here.)
How about a bubble-grid-map showing the absolute population change in each grid cell over a five year period?
Gridded population change 2012 to 2017 in Europe. Growing regions are blue, shrinking regions red. Bubble area scaled to absolute change in numbers. Data: Eurostat (demo_r_pjanaggr3).
cc-by Jonas Schöley