Released Friday, August 29, 2025.
Introducing usmap 1.0.0! This week we celebrated 10 years since the first commit to this project. It has been quite a ride and usmap has grown greatly over the years. To everyone who has supported the project in any way, either by reporting issues, contributing code, or just using the package in your work, thank you so much.
I'm happy to announce that with this version we have finally added Puerto Rico! This addition has been years in the making and its now available throughout usmap.
- Add Puerto Rico support to all
usmapfunctions (where relevant), see Issue #20.- All included map years have been retroactively updated to include Puerto Rico, so any valid value of
data_yearwill include Puerto Rico if desired. - Functions now return Puerto Rico in their data sets and it can be included or excluded just like any state (using FIPS, full name, abbreviation, etc.).
- Puerto Rican municipalities will be shown when using
"county"map variants. - By default, Puerto Rico is not shown when using
plot_usmap()unless it is specifically included with theincludeparameter. This default behavior can be changed by setting the environment variableUSMAP_DEFAULT_EXCLUDE_PR = FALSE. Setting this parameter will include Puerto Rico by default when callingplot_usmap()unless specifically excluded with theexcludeparameter. - Special thanks @dcaud who started this work years ago.
- All included map years have been retroactively updated to include Puerto Rico, so any valid value of
- Improve documentation and vignettes.
Released Wednesday, May 28, 2025.
- Add
data_yearparameter tofips(),fips_info(),map_with_data(),plot_usmap(), andus_map(), see Issue #110.- Allows user to select the year for which to plot US map.
- This will allow the user to match the map that is provided to the data they are using.
- To start with, 2021, 2022, 2023, and 2024 maps are included.
- Going forward, each year will be added to
usmapdata(usmap's data repository) and previous years can be accessed with this parameter. usmapdata v0.4.0or later is required to use this parameter.- If the value provided via
data_yearis not available, the package will select the next year for which data exists.- For example, if data sets 2022 and 2023 are available and the user calls
us_map(data_year = 2019), 2022 will be used. - A warning is presented when this occurs to alert the user.
- For example, if data sets 2022 and 2023 are available and the user calls
- Further reading on the impetus for this change: major changes made to Connecticut counties in 2023.
- The old Connecticut counties are available in the 2021 data, 2022 and forward use the new planning regions.
- Update package author email.
- The
as_sfparameter has been completely removed fromusmapdata.- Its usage was already removed from
usmapbut its removal is noted here as a final notice. - Any existing code that sets it can safely delete it from
usmapdatafunction calls.
- Its usage was already removed from
Released Thursday, March 21, 2024.
- Add citation information to README, see Issue #86.
- Update map theme to work with new legend behavior in ggplot2 3.5.0.
- Update provided population and poverty (county & state) data sets, see Issue #88.
- Previous data sets from 2015 and 2014, respectively have been updated to 2022 and 2021 versions, respectively.
- The main change (besides numerical values) is that Connecticut now has the correct FIPS codes in the 2022 county population data set. See this Federal Register document for more information. The 2021 county data does not include CT updates yet since the new FIPS codes were not made effective until 2022. Poverty data for 2022 is not available yet so the most recently available data from 2021 is included for now.
- Replace
sizewithlinewidthinplot_usmap()documentation, see Issue #89.
- Internal
usmapdatafunctions are used for data transformation (i.e.usmap_transform()) values for consistency.- This allows the same values used to create the map to be used when transforming external data.
- Values will now only have to be updated in one place.
usmapdata 0.2.2is now a required dependency because of this change.
- Continue
sf-based map data file migration.- Usage of the
as_sfparameter inusmapdatafunction calls has been removed. - The parameter will be removed from
usmapdatafunctions in the future.
- Usage of the
Released Saturday, January 20, 2024.
This is a major new release for usmap. The data has been modernized to be a simple features (sf) object. This will allow for much greater flexibility in the type of data that can be portrayed on the US map. us_map(), plot_usmap(), and usmap_transform() have been updated to work with these new formats. See the examples in the vignettes and README for more information.
- Migrate to new
usmapdata 0.2.0sf-based map data files.- Map data produced by
us_map()is now returned as ansfobject instead of a standard data frame. - Allows for further flexibility in manipulation, easier plotting, and reduced file sizes.
- There should be no visible changes to existing
usmapfunctionality. - If something doesn't look right, please open an issue.
- Map data produced by
- Change the output of
usmap_transform()in accordance with thesfchange mentioned above.- The output data frame now replaces the
lat/loncolumns with a singlegeometrycolumn with the transformed points and can be plotted usingggplot2::geom_sf(). - Review the included examples and
advanced-mappingvignette for more details.
- The output data frame now replaces the
usmap_transform()now acceptssfobjects and automatically transforms itsgeometrycolumn to the projection used by this package.- It is now possible to add any geographical features to the plotted map such as rivers, roads, topographical data, etc. using
usmap_transform()before plotting withggplot2::geom_sf(), see Issue #12. - See the provided vignettes and examples for more information.
- Input can now also be in any coordinate reference system, if it is not standard longitude/latitude, it can be specified with the
crsparameter.
- It is now possible to add any geographical features to the plotted map such as rivers, roads, topographical data, etc. using
- Add
usriversdataset featuring major US rivers.- The dataset is provided in an
sfobject and is ready to be transformed withusmap_transform()and plotted withplot_usmap() + ggplot2::geom_sf().
- The dataset is provided in an
- Add visual snapshot tests for more resilient plots, see Issue #80.
- Add state abbreviation (
abbr) column tocitypopdata set. - Update and standardize documentation throughout the page.
- Includes updates to formatting, links, and language.
- Rename vignettes to make them easier to find and read in order.
plot_usmap()warnings have been cleaned up, including a defunct warning that didn't make sense.
output_namesis no longer required as a parameter tousmap_transform().- It continues to exist for compatibility but produces a warning and may be removed in a future version of
usmap. usmap_transform()will output its transformation using thesfdefault of"geometry"as the column name.
- It continues to exist for compatibility but produces a warning and may be removed in a future version of
Released Monday, December 11, 2023.
- Replace local state and county FIPS files with
usmapdata::fips_data().- Single source of truth for this data is now housed in
usmapdata. - Data will be updated in sync with shapefile updates.
- Single source of truth for this data is now housed in
- FIPS file change resolves issue with Valdez-Cordova Census Area in Alaska, see Issue #72.
- Resolve all code-linting warnings.
- Increase test coverage to 100%.
Released Saturday, October 21, 2023.
- Update package author email and website.
Released Tuesday, June 13, 2023.
- Replace retired packages
maptoolsandrgdalwithspandsf, see Issue #57 and Issue #70.- Special thanks @rsbivand.
Released Saturday, November 12, 2022.
- Fix failing
plot_usmaptests, see Issue #58. - Fix
aes_stringandsizedeprecation in ggplot2, see Issue #59.
Released Sunday, February 27, 2022.
- Add
input_namesandoutput_namesparameters tousmap_transform, see Issue #33. - Add
sortAndRemoveDuplicatesparameter tofips_info, see Issue #47.- The default (
FALSE) value changes existing behavior, to retain existing behavior, change the parameter value toTRUE.
- The default (
- Improve map resolution.
- More polygons are shown, this has a marginal increase on the data set file sizes but it is negligible.
- Add shape file update history, see Issue #30.
- Extract map data frame to external usmapdata package to reduce
usmappackage size, see Issue #39.- All existing functions (including
us_map()) should continue to work as usual.
- All existing functions (including
- Add data format examples for
plot_usmapto "Mapping" vignette, see Issue #42.
- Fix CRS warnings, see Issue #40.
- Fix
plot_usmap()issue when provided data has"values"column, see Issue #48 and this Stack Overflow question.
Released Wednesday, October 7, 2020.
- Update links in documentation.
Released Wednesday, October 7, 2020.
- New website for the package: https://usmap.dev
- Lightweight landing page containing useful information, links, and examples of usmap usage.
statecan now be omitted when usingfips(). In this case, all available FIPS codes are returned, sorted by state abbreviation, see Issue #28.fipscan now be omitted when usingfips_info(). In this case, all available states are returned, sorted by state abbreviation, see Issue #28.- Fix duplicate coordinates from being removed during
usmap_transform(if value columns differ), see Issue #32. - Prevent warnings introduced by
ggplot2v3.3.0, see Issue #35. - Set minimum R version to 3.5.0. Versions lower than this do not support the latest version of the
rgdalpackage.
Released Friday, September 13, 2019.
- Ability to include county name labels on county maps, see Issue #14.
- They currently work the same as state labels except they include the full county name (excluding the word "County").
- Ability to pass
ggplot2::geom_polygon()parameters toplot_usmap(), see Issue #15.- This is a breaking change and removes the
linesparameter. The previous defaults ofcolor="black",fill="white", andsize=0.4are maintained and will be used for any of those parameters that are omitted. - Refer to the
ggplot2::geom_polygon()documentation for more information. - The following aesthetics are supported:
alpha,colour/color,fill,linetype,size - This feature provides more direct control over the appearance of plots.
- This is a breaking change and removes the
- Ability to exclude counties and states with new
excludeparameter inus_map,map_with_data, andplot_usmap, see Issue #19. - New function (
usmap_transform) to transform longitude/latitude point data frames into coordinate reference system that matches the plotted map, see Issue #21.- Also includes
usmap_crs()to easily access the coordinate reference system used by the package.
- Also includes
- In the data frames provided by
us_map(),longandlathave been renamed toxandy, respectively, see Issue #16.- This should not affect the behavior of
plot_usmap()but will be a breaking change for any code that relies onus_map().
- This should not affect the behavior of
- Added contributing guidelines and templates, see Issue #24.
- These can be see in the .github folder.
Released Sunday, September 16, 2018.
- Ability to include state abbreviation labels in state maps, see Issue #9.
- e.g.
plot_usmap(labels = TRUE)
- e.g.
- Add US Census Bureau regional divisions as constants for quick plotting of certain regions.
- e.g.
plot_usmap(include = .northeast_region) - The provided regions and divisions can be seen on this map by the US Census Bureau.
- e.g.
- Allow ability to include only certain states while viewing county map, see Issue #11.
- e.g.
us_map("counties", include = "TX")orplot_usmap("counties", include = c("AZ", "NM"))
- e.g.
- Vectorize counties in
fips, see Issue #10.- e.g.
fips("NJ", c("Bergen", "Hudson"))
- e.g.
- Allow all columns in the data frame that's passed to
map_with_data()orplot_usmap()to be preserved.
- Add Kusilvak Census Area (FIPS code 02158), replaces Wade Hampton Census Area (FIPS code 02270).
Released Sunday, June 3, 2018.
- Update shape files to 2017 versions.
- Improvements to
fipsandfips_info:- Vectorization support (e.g. enter multiple states in
fipsto receive a vector of corresponding FIPS codes) - e.g.
fips(c("AK", "AL"))orfips(c("Alaska", "Alabama")) - Mixed abbreviations and full names are also supported:
fips(c("AK", "Alabama")) - Improved warning and error messages.
- Vectorization support (e.g. enter multiple states in
- Allow data to be specified by state abbreviation or full name in
plot_usmapandmap_with_data(instead of just by FIPS code).- The data frame passed to
plot_usmapormap_with_data(via thedata =parameter), can now be a two column data frame with columns "fips" and "values" or "state" and "values".
- The data frame passed to
Released Tuesday, August 15, 2017.
- Standardize documentation language.
- Improve descriptiveness of error messages and warnings.
- Allow data passed to
map_with_dataandplot_usmapto contain FIPS codes with missing leading zeros.- This usually occurs when the codes are read as
numericfrom a.csvfile.
- This usually occurs when the codes are read as
Released Saturday, April 29, 2017.
- Add
map_with_datafunction for adding user-defined data to map data. - Add ability to plot map with data automatically (utilizes new
map_with_datafunction).
Released Sunday, January 29, 2017.
- First release
- Retrieve US map data frame for merging with data and plotting
- Lookup FIPS codes for states and counties (reverse-lookup as well)
- Map plotting convenience method (uses
ggplot2)