Cartography/Leaflet Homework

Create a map similar to this map from the Washington Post (open the link in an incognito window to avoid the paywall if you need) for Richmond using the educational attainment data linked below and census tracts that you will download with the tigris package

library( sf )

# Download the tigris package if necessary
if( !require( tigris) ) {
  install.packages("tigris")
  library( tigris)
}

education_url <- "https://github.com/dyerlab/ENVS-Lectures/raw/master/data/edu_attainment-shp.zip"

tracts <- tracts("VA", "Richmond city") %>%
  st_transform(4326)

Map Requirements

  • Dot density map of education attainment when zoomed out, with dot color based on attainment level

  • Choropleth map of education attainment level by census tracts when zoomed in

  • Legend

  • Scale bar

  • At least one feature with a pop-up or label


If you get stuck transforming the education attainment data from points to polygons you can download this csv. It is a tally of the number of points per tract by education attainment. It is up to you what metric to use to color the polygons.

LS0tCnRpdGxlOiAiTGVhZmxldCBIb21ld29yayIKYXV0aG9yOiAiWU9VUiBOQU1FIEhFUkUiCmRhdGU6ICIzLzE1LzIwMjEiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMjIENhcnRvZ3JhcGh5L0xlYWZsZXQgSG9tZXdvcmsKCkNyZWF0ZSBhIG1hcCBzaW1pbGFyIHRvIFt0aGlzIG1hcCBmcm9tIHRoZSBXYXNoaW5ndG9uIFBvc3RdKGh0dHBzOi8vd3d3Lndhc2hpbmd0b25wb3N0LmNvbS9zZi9sb2NhbC8yMDEzLzExLzA5L3dhc2hpbmd0b24tYS13b3JsZC1hcGFydC8pIChvcGVuIHRoZSBsaW5rIGluIGFuIGluY29nbml0byB3aW5kb3cgdG8gYXZvaWQgdGhlIHBheXdhbGwgaWYgeW91IG5lZWQpIGZvciBSaWNobW9uZCB1c2luZyB0aGUgZWR1Y2F0aW9uYWwgYXR0YWlubWVudCBkYXRhIGxpbmtlZCBiZWxvdyBhbmQgY2Vuc3VzIHRyYWN0cyB0aGF0IHlvdSB3aWxsIGRvd25sb2FkIHdpdGggdGhlIGB0aWdyaXNgIHBhY2thZ2UKCmBgYHtyIGV2YWw9RkFMU0V9CmxpYnJhcnkoIHNmICkKCiMgRG93bmxvYWQgdGhlIHRpZ3JpcyBwYWNrYWdlIGlmIG5lY2Vzc2FyeQppZiggIXJlcXVpcmUoIHRpZ3JpcykgKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygidGlncmlzIikKICBsaWJyYXJ5KCB0aWdyaXMpCn0KCmVkdWNhdGlvbl91cmwgPC0gImh0dHBzOi8vZ2l0aHViLmNvbS9keWVybGFiL0VOVlMtTGVjdHVyZXMvcmF3L21hc3Rlci9kYXRhL2VkdV9hdHRhaW5tZW50LXNocC56aXAiCgp0cmFjdHMgPC0gdHJhY3RzKCJWQSIsICJSaWNobW9uZCBjaXR5IikgJT4lCiAgc3RfdHJhbnNmb3JtKDQzMjYpCgpgYGAKCgojIyMgTWFwIFJlcXVpcmVtZW50cwoKLSBEb3QgZGVuc2l0eSBtYXAgb2YgZWR1Y2F0aW9uIGF0dGFpbm1lbnQgd2hlbiB6b29tZWQgb3V0LCB3aXRoIGRvdCBjb2xvciBiYXNlZCBvbiBhdHRhaW5tZW50IGxldmVsCgotIENob3JvcGxldGggbWFwIG9mIGVkdWNhdGlvbiBhdHRhaW5tZW50IGxldmVsIGJ5IGNlbnN1cyB0cmFjdHMgd2hlbiB6b29tZWQgaW4KICAKICAtIFtgcGl2b3Rfd2lkZXIoKWBdKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy90aWR5ci92aWduZXR0ZXMvcGl2b3QuaHRtbCkgYW5kIFtgdGFsbHkoKWBdKGh0dHBzOi8vZHBseXIudGlkeXZlcnNlLm9yZy9yZWZlcmVuY2UvdGFsbHkuaHRtbCkgd2VyZSBoZWxwZnVsIGZvciBtZSB0byBjb21iaW5lIHRoZSBwb2ludCBkYXRhIGFuZCB0aGUgdHJhY3RzIHBvbHlnb25zCgotIExlZ2VuZAoKLSBTY2FsZSBiYXIKCi0gQXQgbGVhc3Qgb25lIGZlYXR1cmUgd2l0aCBhIHBvcC11cCBvciBsYWJlbAoKCi0tLQoKSWYgeW91IGdldCBzdHVjayB0cmFuc2Zvcm1pbmcgdGhlIGVkdWNhdGlvbiBhdHRhaW5tZW50IGRhdGEgZnJvbSBwb2ludHMgdG8gcG9seWdvbnMgeW91IGNhbiBkb3dubG9hZCBbdGhpcyBjc3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9keWVybGFiL0VOVlMtTGVjdHVyZXMvcmF3L21hc3Rlci9kYXRhL2VkdV90YWxseS5jc3YpLiBJdCBpcyBhIHRhbGx5IG9mIHRoZSBudW1iZXIgb2YgcG9pbnRzIHBlciB0cmFjdCBieSBlZHVjYXRpb24gYXR0YWlubWVudC4gSXQgaXMgdXAgdG8geW91IHdoYXQgbWV0cmljIHRvIHVzZSB0byBjb2xvciB0aGUgcG9seWdvbnMuCgoKIA==