rggplot2choroplethchoroplethr

How to select specific countries to make a choropleth map


I'm trying to make a choropleth map of some specific countries. I have the data with values for the choropleth map, and the other countries that I don't have data will be plotted in grey.

So here is my code until now:

data_iso = data.frame(region=c("Argentina", "Brazil",   "Chile", "Colombia", "Costa Rica", "Mexico", "Panama", "Peru",  "El Salvador"),
                      ratemort = c(25.510391, 73.875825,20.297896,  73.557939  ,23.266236,  42.190321,  48.069608,  9.971303 ,109.941822))

library(ggmap)
library(ggplot2)
library(raster)
library(maptools)

mapa <- borders("world", regions = c("Brazil", "Uruguay", "Argentina", "French Guiana", "Suriname", "Colombia", "Venezuela",
                                     "Bolivia", "Ecuador", "Chile", "Paraguay", "Peru", "Guyana", "Panama", "Costa Rica", 
                                     "Nicaragua", "Honduras", "El Salvador", "Belize", "Guatemala", "Mexico", "Trinidad and Tobago",
                                     "Caribe", "Puerto Rico", "Dominican Republic", "Haiti", "Jamaica", "Cuba", "Bahamas", "Antiles",
                                     "Dominica", "Saba"), 
                fill = "grey70", colour = "black")
ggplot() + mapa + theme_bw() + xlab("Longitude (decimals)") + ylab("Latitude (decimals)") + 
  theme(panel.border = element_blank(), panel.grid.major = element_line(colour = "grey80"), panel.grid.minor = element_blank())

enter image description here

Then, I'd like to add the values of data_iso$ratemort in the their respective countries.

Any suggestion?


Solution

  • I am not exactly sure what your question is. But since you used the choroplethr tag I will explain how to make the map using the choroplethr package:

    data_iso = data.frame(region=c("argentina", "brazil",   "chile", "colombia", "costa rica", "mexico", "panama", "peru",  "el salvador"),
                          value = c(25.510391, 73.875825,20.297896,  73.557939  ,23.266236,  42.190321,  48.069608,  9.971303 ,109.941822))
    
    country_choropleth(data_iso, zoom=data_iso$region)
    

    enter image description here

    The key modification is this. The function ?country_choropleth, like all functions in the choroplethr suite of packages, requires your dataframe to have one column named region and one column named value. Also, all regions in choroplethr generally use lowercase. See ?country_choroplethr for details on naming conventions.

    Your map has no color. I am not sure if that is the error that you want help with.

    By default choroplethr uses Black to convey NA values. Here I set the zoom to be only countries that have data. I do not know if all the counties in your zoom list are present in the map, if they are spelled in the same way they appear in the map, and so on. See the zoom parameter in ?country_choropleth for details. Getting the naming right is normally the hardest part of mapping in R (including the choroplethr package).