knitr::opts_chunk$set(echo = TRUE, 
                      fig.dim = c(6, 4.6), 
                      dpi = 200, 
                      out.width = '100%')
library(mxmaps)
library(viridis)
library(scales)

df_mxmunicipio_2020$value <-  df_mxmunicipio_2020$indigenous_language / 
  df_mxmunicipio_2020$pop 
gg = MXMunicipioChoropleth$new(df_mxmunicipio_2020)
gg$title <- "Percentage of the population that speaks\nan indigenous language"
gg$set_num_colors(1)
gg$ggplot_scale <- scale_fill_viridis("percent", 
                                      labels = percent)
gg$render()

Another example with categorical data

library("ggplot2")

df_mxmunicipio_2020$value <- as.factor(sample(c(NA, letters[1:6]),
                                              nrow(df_mxmunicipio_2020),
                                              replace = TRUE) )
gg = MXMunicipioChoropleth$new(df_mxmunicipio_2020)
gg$title <- "Municipios a-f"
gg$set_num_colors(6)
gg$set_zoom(subset(df_mxmunicipio_2020, state_name %in% c("Ciudad de México",
                                                          "México"))$region)
gg$ggplot_scale <- scale_fill_brewer("type", type = "qual", palette = 2,
                                     na.value = "gray")
p <- gg$render()
p + theme_void()

You can also edit the ggplot object directly, for example, if you wanted to remove the municipio borders.

library("scales")

df_mxmunicipio_2020$value <-  df_mxmunicipio_2020$afromexican / 
  df_mxmunicipio_2020$pop 
p <- mxmunicipio_choropleth(df_mxmunicipio_2020,
                            title = "Percentage of population that identifies as Afromexican", 
                            legend = "percent\nAfromexican",
                            num_colors = 1) 
p[["layers"]][[1]][["aes_params"]][["colour"]] <- "transparent"
p

We can also label the map with the names of important municipios (in this case those municipios in Chihuahua with more than 100,000 persons)

library("ggrepel")

df_mxmunicipio_2020$value <-  df_mxmunicipio_2020$indigenous_language /
  df_mxmunicipio_2020$pop * 100
chih <- subset(df_mxmunicipio_2020, state_name %in% c("Chihuahua"))
p <- mxmunicipio_choropleth(df_mxmunicipio_2020, num_colors = 1,
                       zoom = chih$region,
                       title = "Percentage of the population that self-identifies\nas indigenous in Chihuahua",
                       show_states = FALSE,
                       legend = "%")

labels <- chih
labels$group <- NA
labels <- subset(labels, pop > 1e05)
p +
  geom_text_repel(data = labels, 
                  aes(long, lat, label = municipio_name), 
                  nudge_x = .1, 
                  nudge_y = .7) +
  geom_point(data = labels, 
             aes(long, lat), 
             color = "#d6604d",
             size = 1)


diegovalle/mxmaps documentation built on Sept. 22, 2023, 9:57 p.m.