Sadly Hans Rosling of Gapminder fame died last week. He was a genuine public health and data hero committed to changing the way people look at the world.

I had the privilege to meet him on one occasion - I had to speak after him at a conference on data visualisation! I remember he used the Gapminder tool to explain his part in the relative health of Sweden, his native country, to the great amusement of the audience.

We had lunch afterwards and one thing I remember from that conversation was about the communication of data - how public health analysts should learn to be more like weather forecasters.

I often use the Gapminder tool (now Google Motion Charts), and it is possible to create similar charts in R, so in memory of Hans we have created a simple motion chart using some of our data.

## We'll use PHOF data downloaded from Fingertips
data <- readr::read_csv("~/Downloads/gapdata.csv", 
                        col_types = c("ccccccdddddcccc")) %>%
  janitor::clean_names()
## We'll just select some indicators with longish time series - these are life expecancy and inequality and convert the years to numeric format
gapdata <- data %>%
  filter(stringr::str_detect(x_indicator, "expectancy | slope")) %>%
  mutate(time = as.numeric(substr(time_period, 1, 4))) %>%
  select(x_indicator, time, value, area_name, sex) %>%
  mutate(indicator = paste(x_indicator, sex, sep = "-")) %>%
  distinct(indicator, time, area_name, value) %>%
  spread(indicator, value)

and create the chart

library(googleVis)
op <- options(gvis.plot.tab = 'chart')
M <- gvisMotionChart(gapdata, idvar="area_name", timevar="time")
plot(M)
LS0tCnRpdGxlOiAiSW4gbWVtb3J5IG9mIEhhbnMgUm9zbGluZyAxOTQ4IC0gMjAxNyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKU2FkbHkgSGFucyBSb3NsaW5nIG9mIEdhcG1pbmRlciBmYW1lIGRpZWQgbGFzdCB3ZWVrLiBIZSB3YXMgYSBnZW51aW5lIHB1YmxpYyBoZWFsdGggYW5kIGRhdGEgaGVybyBjb21taXR0ZWQgdG8gY2hhbmdpbmcgdGhlIHdheSBwZW9wbGUgbG9vayBhdCB0aGUgd29ybGQuIAoKSSBoYWQgdGhlIHByaXZpbGVnZSB0byBtZWV0IGhpbSBvbiBvbmUgb2NjYXNpb24gLSBJIGhhZCB0byBzcGVhayBhZnRlciBoaW0gYXQgYSBjb25mZXJlbmNlIG9uIGRhdGEgdmlzdWFsaXNhdGlvbiEgSSByZW1lbWJlciBoZSB1c2VkIHRoZSBHYXBtaW5kZXIgdG9vbCB0byBleHBsYWluIGhpcyBwYXJ0IGluIHRoZSByZWxhdGl2ZSBoZWFsdGggb2YgU3dlZGVuLCBoaXMgbmF0aXZlIGNvdW50cnksIHRvIHRoZSBncmVhdCBhbXVzZW1lbnQgb2YgdGhlIGF1ZGllbmNlLiAKCldlIGhhZCBsdW5jaCBhZnRlcndhcmRzIGFuZCBvbmUgdGhpbmcgSSByZW1lbWJlciBmcm9tIHRoYXQgY29udmVyc2F0aW9uIHdhcyBhYm91dCB0aGUgY29tbXVuaWNhdGlvbiBvZiBkYXRhIC0gaG93IHB1YmxpYyBoZWFsdGggYW5hbHlzdHMgc2hvdWxkIGxlYXJuIHRvIGJlIG1vcmUgbGlrZSB3ZWF0aGVyIGZvcmVjYXN0ZXJzLgoKSSBvZnRlbiB1c2UgdGhlIEdhcG1pbmRlciB0b29sIChub3cgR29vZ2xlIE1vdGlvbiBDaGFydHMpLCBhbmQgaXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIHNpbWlsYXIgY2hhcnRzIGluIGBSYCwgc28gaW4gbWVtb3J5IG9mIEhhbnMgd2UgaGF2ZSBjcmVhdGVkIGEgc2ltcGxlIG1vdGlvbiBjaGFydCB1c2luZyBzb21lIG9mIG91ciBkYXRhLgoKYGBge3J9CiMjIFdlJ2xsIHVzZSBQSE9GIGRhdGEgZG93bmxvYWRlZCBmcm9tIEZpbmdlcnRpcHMKCmRhdGEgPC0gcmVhZHI6OnJlYWRfY3N2KCJ+L0Rvd25sb2Fkcy9nYXBkYXRhLmNzdiIsIAogICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjKCJjY2NjY2NkZGRkZGNjY2MiKSkgJT4lCiAgamFuaXRvcjo6Y2xlYW5fbmFtZXMoKQoKIyMgV2UnbGwganVzdCBzZWxlY3Qgc29tZSBpbmRpY2F0b3JzIHdpdGggbG9uZ2lzaCB0aW1lIHNlcmllcyAtIHRoZXNlIGFyZSBsaWZlIGV4cGVjYW5jeSBhbmQgaW5lcXVhbGl0eSBhbmQgY29udmVydCB0aGUgeWVhcnMgdG8gbnVtZXJpYyBmb3JtYXQKCmdhcGRhdGEgPC0gZGF0YSAlPiUKICBmaWx0ZXIoc3RyaW5ncjo6c3RyX2RldGVjdCh4X2luZGljYXRvciwgImV4cGVjdGFuY3kgfCBzbG9wZSIpKSAlPiUKICBtdXRhdGUodGltZSA9IGFzLm51bWVyaWMoc3Vic3RyKHRpbWVfcGVyaW9kLCAxLCA0KSkpICU+JQogIHNlbGVjdCh4X2luZGljYXRvciwgdGltZSwgdmFsdWUsIGFyZWFfbmFtZSwgc2V4KSAlPiUKICBtdXRhdGUoaW5kaWNhdG9yID0gcGFzdGUoeF9pbmRpY2F0b3IsIHNleCwgc2VwID0gIi0iKSkgJT4lCiAgZGlzdGluY3QoaW5kaWNhdG9yLCB0aW1lLCBhcmVhX25hbWUsIHZhbHVlKSAlPiUKICBzcHJlYWQoaW5kaWNhdG9yLCB2YWx1ZSkKCgoKYGBgCgphbmQgY3JlYXRlIHRoZSBjaGFydAoKYGBge3J9CmxpYnJhcnkoZ29vZ2xlVmlzKQoKb3AgPC0gb3B0aW9ucyhndmlzLnBsb3QudGFiID0gJ2NoYXJ0JykKCk0gPC0gZ3Zpc01vdGlvbkNoYXJ0KGdhcGRhdGEsIGlkdmFyPSJhcmVhX25hbWUiLCB0aW1ldmFyPSJ0aW1lIikKCnBsb3QoTSkKYGBgCg==