Adding motion to choropleths
[This article was first published on Jkunst - R category, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Time ago @hrbrmstr show how to replicate a visualization made by New York Times with R.
The @nytgraphics folks are spiffy.so is #rstats https://t.co/zc1gIx6cyE https://t.co/XAmVPDLfC7 #tigrisviridisggplot pic.twitter.com/9ZK6wvYDnh
— boB Rudis (@hrbrmstr) March 25, 2016
The result we hope is like this:
I really like small multiples and this is a good example of usage. However if the multiples means a lot mini plots maybe you can try add animation.
Let’s start using the script made by Bob:
URL <- "http://graphics8.nytimes.com/newsgraphics/2016/01/15/drug-deaths/c23ba79c9c9599a103a8d60e2329be1a9b7d6994/data.json"
data("uscountygeojson")
data("unemployment")
data <- fromJSON(URL) %>%
tbl_df() %>%
gather(year, value, -fips) %>%
mutate(year = sub("^y", "", year),
value = ifelse(is.na(value), 0, value))
head(data)
fips | year | value |
---|---|---|
01001 | 2002 | 1 |
01003 | 2002 | 2 |
01005 | 2002 | 0 |
01007 | 2002 | 1 |
01009 | 2002 | 2 |
01011 | 2002 | 0 |
Now we’ll prepare the data as the motion plugin require the data.
ds <- data %>%
group_by(fips) %>%
do(item = list(
fips = first(.$fips),
sequence = .$value,
value = first(.$value))) %>%
.$item
hc <- highchart(type = "map") %>%
hc_add_series(data = ds,
name = "drug deaths per 100,000",
mapData = uscountygeojson,
joinBy = "fips",
borderWidth = 0.01) %>%
hc_colorAxis(stops = color_stops()) %>%
hc_title(text = "How the Epidemic of Drug Overdose Deaths Ripples") %>%
hc_legend(layout = "vertical", reversed = TRUE,
floating = TRUE, align = "right") %>%
hc_add_theme(hc_theme_smpl()) %>%
hc_motion(
enabled = TRUE,
axisLabel = "year",
labels = sort(unique(data$year)),
series = 0,
updateIterval = 50,
magnet = list(
round = "floor",
step = 0.1
)
)
And the result:
hc
I like it!
Note this using the development version of highcarter using the motion plugin.
To leave a comment for the author, please follow the link and comment on their blog: Jkunst - R category.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.