Use the development version of ggplot2 to get access to geom_sf().
# devtools::install_github("tidyverse/ggplot2")
library(tidycensus)
## Warning: package 'tidycensus' was built under R version 3.4.2
library(tidyverse)
## Loading tidyverse: ggplot2
## Loading tidyverse: tibble
## Loading tidyverse: tidyr
## Loading tidyverse: readr
## Loading tidyverse: purrr
## Loading tidyverse: dplyr
## Warning: package 'dplyr' was built under R version 3.4.2
## Conflicts with tidy packages ----------------------------------------------
## filter(): dplyr, stats
## lag(): dplyr, stats
library(viridis)
## Loading required package: viridisLite
library(stringr)
census_api_key("7491cf955005ef7221778ebe1228115c53a12df6")
## To install your API key for use in future sessions, run this function with `install = TRUE`.
Get a list of the acs variables.
v15 <- load_variables(2015, "acs5", cache = TRUE)
Let’s look at median household income in the last 12 months for the State of Washington using ACS 2015 5 year estimates.
options(tigris_use_cache = TRUE)
medhh <- get_acs(state = "WA", geography = "county",
variables = "B19013_001", geometry = TRUE)
head(medhh)
## Simple feature collection with 6 features and 5 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -124.7631 ymin: 45.83596 xmax: -117.8194 ymax: 48.55072
## epsg (SRID): 4269
## proj4string: +proj=longlat +datum=NAD83 +no_defs
## # A tibble: 6 x 6
## GEOID NAME variable estimate moe
## <chr> <chr> <chr> <dbl> <dbl>
## 1 53005 Benton County, Washington B19013_001 60251 1370
## 2 53007 Chelan County, Washington B19013_001 51837 1886
## 3 53009 Clallam County, Washington B19013_001 47253 1606
## 4 53015 Cowlitz County, Washington B19013_001 47452 1861
## 5 53037 Kittitas County, Washington B19013_001 46458 3093
## 6 53043 Lincoln County, Washington B19013_001 46069 1791
## # ... with 1 more variables: geometry <S3: sfc_MULTIPOLYGON>
medhh %>%
mutate(NAME = str_replace(NAME,'County, Washington','')) %>%
ggplot(aes(x = estimate, y = reorder(NAME, estimate))) +
geom_point()
medhh %>%
ggplot(aes(fill = estimate, color = estimate)) +
geom_sf() +
coord_sf(crs = 26911) +
scale_fill_viridis(option = "magma") +
scale_color_viridis(option = "magma")
Focus on Thurston County.
thursinc <- get_acs(state = "WA", county = "Thurston", geography = "tract", variables = "B19013_001", geometry = TRUE)
head(thursinc)
## Simple feature collection with 6 features and 5 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -123.0239 ymin: 46.89342 xmax: -122.7017 ymax: 47.168
## epsg (SRID): 4269
## proj4string: +proj=longlat +datum=NAD83 +no_defs
## # A tibble: 6 x 6
## GEOID NAME variable
## <chr> <chr> <chr>
## 1 53067010400 Census Tract 104, Thurston County, Washington B19013_001
## 2 53067010510 Census Tract 105.10, Thurston County, Washington B19013_001
## 3 53067011100 Census Tract 111, Thurston County, Washington B19013_001
## 4 53067011822 Census Tract 118.22, Thurston County, Washington B19013_001
## 5 53067012330 Census Tract 123.30, Thurston County, Washington B19013_001
## 6 53067990100 Census Tract 9901, Thurston County, Washington B19013_001
## # ... with 3 more variables: estimate <dbl>, moe <dbl>, geometry <S3:
## # sfc_MULTIPOLYGON>
thursinc %>%
mutate(NAME = str_replace(NAME,'Thurston County, Washington','')) %>%
mutate(NAME = str_replace(NAME, "Census Tract","")) %>%
ggplot(aes(x = estimate, y = reorder(NAME, estimate))) +
geom_point()
## Warning: Removed 1 rows containing missing values (geom_point).
thursinc %>%
ggplot(aes(fill = estimate, color = estimate)) +
geom_sf() +
coord_sf(crs = 26911) +
scale_fill_viridis(option = "magma") +
scale_color_viridis(option = "magma")
Let’s redo this using Silge’s code.
library(leaflet)
library(stringr)
library(sf)
## Linking to GEOS 3.6.1, GDAL 2.1.3, proj.4 4.9.3
pal <- colorQuantile(palette = "viridis", domain = thursinc$estimate, n = 10)
thursinc %>%
st_transform(crs = "+init=epsg:4326") %>%
leaflet(width = "100%") %>%
addProviderTiles(provider = "Esri.WorldStreetMap") %>%
addPolygons(popup = ~ str_extract(NAME, "^([^,]*)"),
stroke = FALSE,
smoothFactor = 0,
fillOpacity = 0.4,
color = ~ pal(estimate)) %>%
addLegend("bottomright",
pal = pal,
values = ~ estimate,
title = "Income percentiles",
opacity = 1)