vignettes/articles/Customizing_State_Maps.Rmd
Customizing_State_Maps.Rmd
The goal of this document is to serve as a tutorial for creating customized maps of U.S. states and territories by using custom projections or the tmap package.
In general, the default projections in stateMap()
are appropriate for common state groupings. However, the projection parameter can be used to override the default projections as needed.
Below is an unusual group of states with the default projection.
library(MazamaSpatialPlots)
northernStates <- c("AK", "WA", "ID", "MT", "ND", "MN", "WI",
"MI", "OH", "PA", "NY", "VT", "NH", "ME")
stateMap(
data = example_US_stateObesity,
parameter = 'obesityRate',
palette = 'YlOrRd',
breaks = seq(23, 33, 2),
stateCode = northernStates,
stateBorderColor = 'black',
title = "Obesity Rate in Northern U.S. States"
)
The projection is oddly rotated in this case. To remedy this, a manual projection can be defined:
myproj <- "+proj=lcc +lat_1=32.5 +lat_2=71.4 +lat_0=51.9 +lon_0=-102.9 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs"
stateMap(
data = example_US_stateObesity,
parameter = 'obesityRate',
palette = 'YlOrRd',
breaks = seq(23, 33, 2),
stateCode = northernStates,
projection = myproj,
stateBorderColor = 'black',
title = "Obesity Rate in Northern U.S. States"
)
One benefit of using stateMap()
is that the output is a ggplot2 object. Therefore, maps can be further customized using functionality from the tmap and ggplot2 packages. Many visual adjustments including legend and title locations, fonts, and background colors can be made by simply appending your stateMap()
plot with arguments in tmap::tm_layout()
. Furthermore, tmap::tm_style()
can be used to leverage built in styles and tmap::tm_compass()
can be used to add a compass to your map. The three examples below demonstrate how to build customized visualizations using both stateMap()
parameters and tmap functionality.
stateMap(
data = example_US_stateObesity,
parameter = "obesityRate",
breaks = seq(20,38,3), #increasing color detail
conusOnly = FALSE ,
stateBorderColor = 'black',
) +
tmap::tm_layout(
frame = TRUE,
main.title = 'Obesity Rates in U.S. States and Territories',
main.title.position = c("center", "top"),
title.fontface = 2,
fontfamily = "serif",
bg.color = "grey85",
inner.margins = .05,
legend.position = c('right', 'top')
)
stateMap(
data = example_US_stateObesity,
parameter = "obesityRate",
stateCode = c('ME', 'NH', 'VT', 'MA', 'RI', 'CT'),
stateBorderColor = 'black',
title = 'Obesity Rates in New England'
) +
tmap::tm_layout(
frame = TRUE,
frame.double.line = TRUE,
title.size = 1.2,
title.fontface = 2,
fontfamily = "serif",
bg.color = "grey85",
inner.margins = .08
)
The stateMap()
function allows us to create attractive maps very efficiently and with a lot of flexibility. The function creates highly customized visualizations through direct inputs and by harnessing the functionality of the tmap package.