- Notifications
You must be signed in to change notification settings - Fork16
🗺 Create US maps including Alaska and Hawaii in R
License
pdil/usmap
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Typically in R it is difficult to create nice USchoropleths that includeAlaska and Hawaii. The functions presented here attempt to elegantlysolve this problem by manually moving these states to a new location andproviding a simple features (sf
)object for mapping and visualization. This allows the user to easily addspatial data or features to the US map.
The shape files that we use to plot the maps in R are located in theusmapdata
package. These aregenerated from theUS Census Bureau cartographic boundaryfiles.Maps at both the state and county levels are included for convenience.
Date | usmap version | Shape File Year | Link |
---|---|---|---|
May 10, 2024 | 0.7.1 | 2023 | 🔗 |
January 20, 2024 | 0.7.0 | 2022 | 🔗 |
February 27, 2022 | 0.6.0 | 2020 | 🔗 |
June 3, 2018 | 0.3.0 | 2017 | 🔗 |
January 29, 2017 | 0.1.0 | 2015 | 🔗 |
📦 To install from CRAN (recommended), run the following code in an Rconsole:
install.packages("usmap")
To install the package from this repository, run the following code inan R console:
install.package("devtools")devtools::install_github("pdil/usmap")
This method will provide the most recent developer build ofusmap
.
To begin usingusmap
, import the package using thelibrary
command:
library(usmap)
To read the package vignettes, which explain helpful uses of thepackage, usevignette
:
vignette(package="usmap")vignette("usmap1",package="usmap")# 1. Introductionvignette("usmap2",package="usmap")# 2. Mapping the USvignette("usmap3",package="usmap")# 3. Advanced Mapping
For further help with this package, open anissue or ask a question on StackOverflow with theusmaptag.
- Plot US maps
states<- plot_usmap("states")counties<- plot_usmap("counties")cowplot::plot_grid(states,counties,nrow=1)
- Display only certain states, counties, or regions
library(ggplot2)mt<- plot_usmap("states",include=.mountain,labels=TRUE)fl<- plot_usmap("counties",data=countypov,values="pct_pov_2021",include="FL")+ scale_fill_continuous(low="green",high="red",guide="none")ne<- plot_usmap("counties",data=countypop,values="pop_2022",include=.new_england)+ scale_fill_continuous(low="blue",high="yellow",guide="none")cowplot::plot_grid(mt,fl,ne,nrow=1)
- Transform and add spatial data to map
library(ggplot2)# Transform included `usrivers` data setrivers_transformed<- usmap_transform(usrivers)river_map<- plot_usmap("counties",color="gray80")+ geom_sf(data=rivers_transformed, aes(linewidth=Shape_Length),color="blue")+ scale_linewidth_continuous(range= c(0.3,1.5),guide="none")# Transform included `earthquakes` data seteq_transformed<- usmap_transform(earthquakes)earthquake_map<- plot_usmap()+ geom_sf(data=eq_transformed, aes(size=mag),color="red",alpha=0.25)+ scale_size_continuous(guide="none")cowplot::plot_grid(river_map,earthquake_map,nrow=1)
- Obtain map data with certain region breakdown
us_map(regions="states")#> Simple feature collection with 51 features and 3 fields#> Geometry type: MULTIPOLYGON#> Dimension: XY#> Bounding box: xmin: -2590847 ymin: -2608148 xmax: 2523581 ymax: 731407.9#> Projected CRS: NAD27 / US National Atlas Equal Area#> # A tibble: 51 × 4#> fips abbr full geom#> <chr> <chr> <chr> <MULTIPOLYGON [m]>#> 1 02 AK Alaska (((-2396847 -2547721, -2393297 -2546391, -2…#> 2 01 AL Alabama (((1093777 -1378535, 1093269 -1374223, 1092…#> 3 05 AR Arkansas (((483065.2 -927788.2, 506062 -926263.3, 53…#> 4 04 AZ Arizona (((-1388676 -1254584, -1389181 -1251856, -1…#> 5 06 CA California (((-1719946 -1090033, -1709611 -1090026, -1…#> 6 08 CO Colorado (((-789538.7 -678773.8, -789538.2 -678769.5…#> 7 09 CT Connecticut (((2161733 -83737.52, 2177182 -65221.22, 21…#> 8 11 DC District of Columbia (((1955479 -402055.2, 1960234 -393571.9, 19…#> 9 10 DE Delaware (((2042506 -284367.3, 2043078 -280000.3, 20…#> 10 12 FL Florida (((1855611 -2064809, 1860157 -2054372, 1867…#> # ℹ 41 more rows
us_map(regions="counties")#> Simple feature collection with 3144 features and 4 fields#> Geometry type: MULTIPOLYGON#> Dimension: XY#> Bounding box: xmin: -2590847 ymin: -2608148 xmax: 2523581 ymax: 731407.9#> Projected CRS: NAD27 / US National Atlas Equal Area#> # A tibble: 3,144 × 5#> fips abbr full county geom#> <chr> <chr> <chr> <chr> <MULTIPOLYGON [m]>#> 1 02013 AK Alaska Aleutians East Borough (((-1762715 -2477334, -17612…#> 2 02016 AK Alaska Aleutians West Census Area (((-2396847 -2547721, -23932…#> 3 02020 AK Alaska Anchorage Municipality (((-1517576 -2089908, -15176…#> 4 02050 AK Alaska Bethel Census Area (((-1905141 -2137046, -19009…#> 5 02060 AK Alaska Bristol Bay Borough (((-1685825 -2253496, -16840…#> 6 02063 AK Alaska Chugach Census Area (((-1476669 -2101298, -14698…#> 7 02066 AK Alaska Copper River Census Area (((-1457015 -2063407, -14434…#> 8 02068 AK Alaska Denali Borough (((-1585793 -1980740, -15864…#> 9 02070 AK Alaska Dillingham Census Area (((-1793024 -2236835, -17884…#> 10 02090 AK Alaska Fairbanks North Star Borough (((-1512363 -1851013, -14878…#> # ℹ 3,134 more rows
- Look up FIPS codes for states and counties
fips("New Jersey")#> [1] "34"fips(c("AZ","CA","New Hampshire"))#> [1] "04" "06" "33"fips("NJ",county="Mercer")#> [1] "34021"fips("NJ",county= c("Bergen","Hudson","Mercer"))#> [1] "34003" "34017" "34021"
- Retrieve states or counties with FIPS codes
fips_info(c("34","35"))#> abbr fips full#> 1 NJ 34 New Jersey#> 2 NM 35 New Mexicofips_info(c("34021","35021"))#> full abbr county fips#> 1 New Jersey NJ Mercer County 34021#> 2 New Mexico NM Harding County 35021
- Add FIPS codes to data frame
library(dplyr)data<-data.frame(state= c("NJ","NJ","NJ","PA"),county= c("Bergen","Hudson","Mercer","Allegheny"))data %>%rowwise %>% mutate(fips= fips(state,county))#> # A tibble: 4 × 3#> # Rowwise:#> state county fips#> <chr> <chr> <chr>#> 1 NJ Bergen 34003#> 2 NJ Hudson 34017#> 3 NJ Mercer 34021#> 4 PA Allegheny 42003
The images generated byusmap
are not under any copyright restrictionsand may be used and distributed freely in any publication or otherwise.
The underlying shapefiles used to generate the map data are derived fromtheUS Census Bureau’s TIGER/LineShapefileswhich are not copyrighted but do suggest citation. Seesection 1.2 ofthisdocument.
If you wish to citeusmap
in a publication (appreciated but neverrequired!), you may do so in the following way:
citation("usmap")#> To cite package 'usmap' in publications use:#>#> Di Lorenzo P (2024). _usmap: US Maps Including Alaska and Hawaii_. R#> package version 0.7.0, <https://usmap.dev>.#>#> A BibTeX entry for LaTeX users is#>#> @Manual{,#> title = {usmap: US Maps Including Alaska and Hawaii},#> author = {Paolo {Di Lorenzo}},#> year = {2024},#> note = {R package version 0.7.0},#> url = {https://usmap.dev},#> }
usmap
uses theUS National Atlas Equal Areacoordinate system:
sf::st_crs(9311)
#> Coordinate Reference System: #> User input: EPSG:9311 #> wkt: #> PROJCRS["NAD27 / US National Atlas Equal Area", #> BASEGEOGCRS["NAD27", #> DATUM["North American Datum 1927", #> ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, #> LENGTHUNIT["metre",1]]], #> PRIMEM["Greenwich",0, #> ANGLEUNIT["degree",0.0174532925199433]], #> ID["EPSG",4267]], #> CONVERSION["US National Atlas Equal Area", #> METHOD["Lambert Azimuthal Equal Area (Spherical)", #> ID["EPSG",1027]], #> PARAMETER["Latitude of natural origin",45, #> ANGLEUNIT["degree",0.0174532925199433], #> ID["EPSG",8801]], #> PARAMETER["Longitude of natural origin",-100, #> ANGLEUNIT["degree",0.0174532925199433], #> ID["EPSG",8802]], #> PARAMETER["False easting",0, #> LENGTHUNIT["metre",1], #> ID["EPSG",8806]], #> PARAMETER["False northing",0, #> LENGTHUNIT["metre",1], #> ID["EPSG",8807]]], #> CS[Cartesian,2], #> AXIS["easting (X)",east, #> ORDER[1], #> LENGTHUNIT["metre",1]], #> AXIS["northing (Y)",north, #> ORDER[2], #> LENGTHUNIT["metre",1]], #> USAGE[ #> SCOPE["Statistical analysis."], #> AREA["United States (USA) - onshore and offshore."], #> BBOX[15.56,167.65,74.71,-65.69]], #> ID["EPSG",9311]]
Thiscoordinate reference system(CRS)can also be obtained withusmap::usmap_crs()
.
The code used to generate the map files was based on this blog post byBob Rudis:Moving The Earth (well,Alaska & Hawaii) WithR
About
🗺 Create US maps including Alaska and Hawaii in R