| title | Mexico Choropleths |
|---|
| author | Diego Valle-Jones |
|---|
| date | July 02, 2026 |
|---|
| output | | github_document |
|---|
| toc | fig_width | fig_height |
|---|
true | 8 | 5 |
|
|
|---|
Master: 

This package is based on choroplethr and can be used to easily create maps of Mexico at both the state and municipio levels. It also includes functions to create interactive maps using the leaflet package, map INEGI data from its API, and format strings so they match the INEGI state and municipio codes. Be sure to visit the official website.
For the moment this package is only available from github. For the development version:
if (!require(devtools)) {
install.packages("devtools")
}
devtools::install_github('diegovalle/mxmaps')library(mxmaps)
data("df_mxstate_2020")
df_mxstate_2020$value<-df_mxstate_2020$pop
mxstate_choropleth(df_mxstate_2020,
title="Total population, by state"
)
The data.frame that you provide to the plotting functions must have one column named "region" and one column named "value". The entries for "region" must match the INEGI codes for states ("01", "02", etc) and municipios ("01001", "01002", etc) either as a string with or without a leading "0" or as numerics. The functions str_mxstate and str_mxmunicipio are provided to easily format codes to the INEGI specification. Also, two example data.frames, df_mxstate_2020 and df_mxmunicipio_2020, are provided with demographic variables from the 2020 census.
data("df_mxstate_2020")
knitr::kable(head(df_mxstate_2020))| region | state_name | state_name_official | state_abbr | state_abbr_official | year | pop | pop_male | pop_female | afromexican | indigenous_language |
|---|
| 01 | Aguascalientes | Aguascalientes | AGS | Ags. | 2020 | 1425607 | 696683 | 728924 | 22425 | 2539 |
| 02 | Baja California | Baja California | BC | BC | 2020 | 3769020 | 1900589 | 1868431 | 64362 | 49130 |
| 03 | Baja California Sur | Baja California Sur | BCS | BCS | 2020 | 798447 | 405879 | 392568 | 26330 | 13581 |
| 04 | Campeche | Campeche | CAMP | Camp. | 2020 | 928363 | 456939 | 471424 | 19319 | 91801 |
| 05 | Coahuila | Coahuila de Zaragoza | COAH | Coah. | 2020 | 3146771 | 1563669 | 1583102 | 45976 | 5527 |
| 06 | Colima | Colima | COL | Col. | 2020 | 731391 | 360622 | 370769 | 13574 | 5210 |
data("df_mxmunicipio_2020")
knitr::kable(head(df_mxmunicipio_2020))| state_code | municipio_code | region | state_name | state_name_official | state_abbr | state_abbr_official | municipio_name | year | pop | pop_male | pop_female | afromexican | indigenous_language | metro_area | long | lat |
|---|
| 01 | 001 | 01001 | Aguascalientes | Aguascalientes | AGS | Ags. | Aguascalientes | 2020 | 948990 | 462073 | 486917 | 15170 | 1839 | Aguascalientes | -102.2960 | 21.87982 |
| 01 | 002 | 01002 | Aguascalientes | Aguascalientes | AGS | Ags. | Asientos | 2020 | 51536 | 25261 | 26275 | 225 | 22 | NA | -102.0893 | 22.23832 |
| 01 | 003 | 01003 | Aguascalientes | Aguascalientes | AGS | Ags. | Calvillo | 2020 | 58250 | 28563 | 29687 | 266 | 76 | NA | -102.7188 | 21.84691 |
| 01 | 004 | 01004 | Aguascalientes | Aguascalientes | AGS | Ags. | Cosío | 2020 | 17000 | 8292 | 8708 | 2155 | 7 | NA | -102.3000 | 22.36641 |
| 01 | 005 | 01005 | Aguascalientes | Aguascalientes | AGS | Ags. | Jesús María | 2020 | 129929 | 64219 | 65710 | 2543 | 158 | Aguascalientes | -102.3434 | 21.96127 |
| 01 | 006 | 01006 | Aguascalientes | Aguascalientes | AGS | Ags. | Pabellón de Arteaga | 2020 | 47646 | 23377 | 24269 | 482 | 52 | NA | -102.2765 | 22.14920 |
Here's another example showing Mexican municipios (similar to counties):
data("df_mxmunicipio_2020")
df_mxmunicipio_2020$value<-df_mxmunicipio_2020$indigenous_language/df_mxmunicipio_2020$pop
mxmunicipio_choropleth(df_mxmunicipio_2020,
num_colors=1,
title="Percentage of the population that speaks\nan indigenous language"
)