#libraries
library(tidycensus)
library(tidyverse)
library(tmap)
library(mapview)
library(tigris)
#install Census API:
# https://api.census.gov/data/key_signup.html
#census_api_key("bfff7060ecfc2d4ad3de6c303c949e4f22c3255b", install=T, overwrite = T)
#use "view" for interactive plot; "plot" for static map
tmap_mode("plot")
tmap mode set to plotting
# Miami-Dade
#retrieve race information from Census
md_race = get_decennial(
geography = "county",
state = "FL",
county = "Miami-Dade",
variables = c(
Hispanic = "P2_002N",
White = "P2_005N",
Black = "P2_006N",
Asian = "P2_008N"
),
year = 2020,
geometry = TRUE
)
Getting data from the 2020 decennial Census
Downloading feature geometry from the Census website. To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
Using FIPS code '12' for state 'FL'
Using FIPS code '086' for 'Miami-Dade County'
Using the PL 94-171 Redistricting Data summary file
# convert to scattered dots for plotting
md_dots = as_dot_density(
md_race,
value = "value",
values_per_dot = 2000,
group = "variable"
)
background_tracts = filter(md_race, variable == "White")
# dot density plot
tm_shape(background_tracts) +
tm_polygons(col = "white",
border.col = "grey") +
tm_shape(md_dots) +
tm_dots(col = "variable",
palette = "Set1",
size = 0.025,
title = "1 dot = 2,000 people") +
tm_layout(legend.outside = TRUE,
title = "Race/ethnicity,\n2020 US Census", scale = 1.5)

# Hawai'i
hi_race = get_decennial(
geography = "state",
state = "HI",
variables = c(
Hispanic = "P2_002N",
White = "P2_005N",
Black = "P2_006N",
Asian = "P2_008N"
),
year = 2020,
geometry = TRUE
) %>% shift_geometry() #better plot
Getting data from the 2020 decennial Census
Downloading feature geometry from the Census website. To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
Using FIPS code '15' for state 'HI'
Using the PL 94-171 Redistricting Data summary file
# convert to scattered dots for plotting
hi_dots = as_dot_density(
hi_race,
value = "value",
values_per_dot = 2000,
group = "variable"
)
background_tracts = filter(hi_race, variable == "White")
# dot density plot
tm_shape(background_tracts) +
tm_polygons(col = "white",
border.col = "grey") +
tm_shape(hi_dots) +
tm_dots(col = "variable",
palette = "Set1",
size = 0.025,
title = "1 dot = 2,000 people") +
tm_layout(legend.outside = TRUE,
title = "Race/ethnicity,\n2020 US Census", scale=1.5)

LS0tCnRpdGxlOiAiRG90IERlbnNpdHkgTWFwcyIKb3V0cHV0OiBodG1sX25vdGVib29rCmF1dGhvcjogbWF0aCBldCBhbAotLS0KCmBgYHtyfQojbGlicmFyaWVzCmxpYnJhcnkodGlkeWNlbnN1cykKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkodG1hcCkKbGlicmFyeShtYXB2aWV3KQpsaWJyYXJ5KHRpZ3JpcykKCiNpbnN0YWxsIENlbnN1cyBBUEk6CiMgaHR0cHM6Ly9hcGkuY2Vuc3VzLmdvdi9kYXRhL2tleV9zaWdudXAuaHRtbAojY2Vuc3VzX2FwaV9rZXkoImJmZmY3MDYwZWNmYzJkNGFkM2RlNmMzMDNjOTQ5ZTRmMjJjMzI1NWIiLCBpbnN0YWxsPVQsIG92ZXJ3cml0ZSA9IFQpCgojdXNlICJ2aWV3IiBmb3IgaW50ZXJhY3RpdmUgcGxvdDsgInBsb3QiIGZvciBzdGF0aWMgbWFwCnRtYXBfbW9kZSgicGxvdCIpCgojIE1pYW1pLURhZGUKI3JldHJpZXZlIHJhY2UgaW5mb3JtYXRpb24gZnJvbSBDZW5zdXMKbWRfcmFjZSA9IGdldF9kZWNlbm5pYWwoCiAgZ2VvZ3JhcGh5ID0gImNvdW50eSIsCiAgc3RhdGUgPSAiRkwiLAogIGNvdW50eSA9ICJNaWFtaS1EYWRlIiwKICB2YXJpYWJsZXMgPSBjKAogICAgSGlzcGFuaWMgPSAiUDJfMDAyTiIsCiAgICBXaGl0ZSA9ICJQMl8wMDVOIiwKICAgIEJsYWNrID0gIlAyXzAwNk4iLAogICAgQXNpYW4gPSAiUDJfMDA4TiIKICApLAogIHllYXIgPSAyMDIwLAogIGdlb21ldHJ5ID0gVFJVRQopCgojIGNvbnZlcnQgdG8gc2NhdHRlcmVkIGRvdHMgZm9yIHBsb3R0aW5nCm1kX2RvdHMgPSBhc19kb3RfZGVuc2l0eSgKICBtZF9yYWNlLAogIHZhbHVlID0gInZhbHVlIiwKICB2YWx1ZXNfcGVyX2RvdCA9IDIwMDAsCiAgZ3JvdXAgPSAidmFyaWFibGUiCikKCmJhY2tncm91bmRfdHJhY3RzID0gZmlsdGVyKG1kX3JhY2UsIHZhcmlhYmxlID09ICJXaGl0ZSIpCgojIGRvdCBkZW5zaXR5IHBsb3QKdG1fc2hhcGUoYmFja2dyb3VuZF90cmFjdHMpICsgCiAgdG1fcG9seWdvbnMoY29sID0gIndoaXRlIiwgCiAgICAgICAgICAgICAgYm9yZGVyLmNvbCA9ICJncmV5IikgKyAKICB0bV9zaGFwZShtZF9kb3RzKSArCiAgdG1fZG90cyhjb2wgPSAidmFyaWFibGUiLCAKICAgICAgICAgIHBhbGV0dGUgPSAiU2V0MSIsCiAgICAgICAgICBzaXplID0gMC4wMjUsIAogICAgICAgICAgdGl0bGUgPSAiMSBkb3QgPSAyLDAwMCBwZW9wbGUiKSArIAogIHRtX2xheW91dChsZWdlbmQub3V0c2lkZSA9IFRSVUUsCiAgICAgICAgICAgIHRpdGxlID0gIlJhY2UvZXRobmljaXR5LFxuMjAyMCBVUyBDZW5zdXMiLCBzY2FsZSA9IDEuNSkKCiMgSGF3YWknaQpoaV9yYWNlID0gZ2V0X2RlY2VubmlhbCgKICBnZW9ncmFwaHkgPSAic3RhdGUiLAogIHN0YXRlID0gIkhJIiwKICB2YXJpYWJsZXMgPSBjKAogICAgSGlzcGFuaWMgPSAiUDJfMDAyTiIsCiAgICBXaGl0ZSA9ICJQMl8wMDVOIiwKICAgIEJsYWNrID0gIlAyXzAwNk4iLAogICAgQXNpYW4gPSAiUDJfMDA4TiIKICApLAogIHllYXIgPSAyMDIwLAogIGdlb21ldHJ5ID0gVFJVRQopICU+JSBzaGlmdF9nZW9tZXRyeSgpICNiZXR0ZXIgcGxvdAoKIyBjb252ZXJ0IHRvIHNjYXR0ZXJlZCBkb3RzIGZvciBwbG90dGluZwpoaV9kb3RzID0gYXNfZG90X2RlbnNpdHkoCiAgaGlfcmFjZSwKICB2YWx1ZSA9ICJ2YWx1ZSIsCiAgdmFsdWVzX3Blcl9kb3QgPSAyMDAwLAogIGdyb3VwID0gInZhcmlhYmxlIgopCgpiYWNrZ3JvdW5kX3RyYWN0cyA9IGZpbHRlcihoaV9yYWNlLCB2YXJpYWJsZSA9PSAiV2hpdGUiKQoKIyBkb3QgZGVuc2l0eSBwbG90CnRtX3NoYXBlKGJhY2tncm91bmRfdHJhY3RzKSArIAogIHRtX3BvbHlnb25zKGNvbCA9ICJ3aGl0ZSIsIAogICAgICAgICAgICAgIGJvcmRlci5jb2wgPSAiZ3JleSIpICsgCiAgdG1fc2hhcGUoaGlfZG90cykgKwogIHRtX2RvdHMoY29sID0gInZhcmlhYmxlIiwgCiAgICAgICAgICBwYWxldHRlID0gIlNldDEiLAogICAgICAgICAgc2l6ZSA9IDAuMDI1LCAKICAgICAgICAgIHRpdGxlID0gIjEgZG90ID0gMiwwMDAgcGVvcGxlIikgKyAKICB0bV9sYXlvdXQobGVnZW5kLm91dHNpZGUgPSBUUlVFLAogICAgICAgICAgICB0aXRsZSA9ICJSYWNlL2V0aG5pY2l0eSxcbjIwMjAgVVMgQ2Vuc3VzIiwgc2NhbGU9MS41KQoKYGBgCgoK