usmap: Mapping the US

Paolo Di Lorenzo

2017-01-28

Extending plot_usmap with ggplot2

The nice thing about usmap::plot_usmap is it returns a ggplot object object, which means we can add ggplot layers to the plot right out of the box.

library(ggplot2)

usmap::plot_usmap(regions = "counties") + 
  labs(title = "US Counties", subtitle = "This is a blank map of the counties of the United States.") + 
  theme(panel.background = element_rect(colour = "black", fill = "lightblue"))

Plot only certain states

library(ggplot2)

usmap::plot_usmap(include = c("CA", "ID", "NV", "OR", "WA")) +
  labs(title = "Western US States", subtitle = "These are the states in the Pacific Timezone.")

Raw map data

The raw US map data for counties or states can be obtained for further manipulation (and joining with data).

str(usmap::us_map())
#> 'data.frame':    12963 obs. of  9 variables:
#>  $ long : num  1091779 1091268 1091140 1090940 1090913 ...
#>  $ lat  : num  -1380695 -1376372 -1362998 -1343517 -1341006 ...
#>  $ order: int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ hole : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
#>  $ piece: int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ group: chr  "01.1" "01.1" "01.1" "01.1" ...
#>  $ fips : chr  "01" "01" "01" "01" ...
#>  $ abbr : chr  "AL" "AL" "AL" "AL" ...
#>  $ full : chr  "Alabama" "Alabama" "Alabama" "Alabama" ...
str(usmap::us_map(regions = "counties"))
#> 'data.frame':    54508 obs. of  10 variables:
#>  $ long  : num  1225889 1244873 1244129 1272010 1276797 ...
#>  $ lat   : num  -1275020 -1272331 -1267515 -1262889 -1295514 ...
#>  $ order : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ hole  : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
#>  $ piece : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ group : chr  "01001.1" "01001.1" "01001.1" "01001.1" ...
#>  $ fips  : chr  "01001" "01001" "01001" "01001" ...
#>  $ abbr  : chr  "AL" "AL" "AL" "AL" ...
#>  $ full  : chr  "Alabama" "Alabama" "Alabama" "Alabama" ...
#>  $ county: chr  "Autauga County" "Autauga County" "Autauga County" "Autauga County" ...

You can also include only certain states and counties just like in plot_usmap. In fact, the regions and include parameters of plot_usmap are derived directly from their usage in us_map.