The region boundaries required to make maps are usually stored in geospatial objects. Those objects can come from shapefiles, geojson files or provided in a R package. See the map section for possibilities.
# Download the shapefile. (note that I store it in a folder called DATA. You have to change that if needed.) download.file("http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip" , destfile="DATA/world_shape_file.zip") # You now have it in your current working directory, have a look! # Unzip this file. You can do it with R (as below), or clicking on the object you downloaded. system("unzip DATA/world_shape_file.zip") # -- > You now have 4 files. One of these files is a .shp file! (TM_WORLD_BORDERS_SIMPL-0.3.shp)
And let’s load it in R
You can filter the geospatial object to plot only a subset of the regions. The following code keeps only Africa and plot it.
It’s a common task to simplify the geospatial object. Basically, it decreases the border precision which results in a lighter object that will be plotted faster.
rgeos package offers the
gSimplify() function to makes the simplification. Play with the
tol argument to control simplification rate.
Another common task is to compute the centroid of each region to add labels. This is doable using the
gCentroid() function of the
# Load the rgeos library library(rgeos) # The gCentroid function computes the centroid of each region: # gCentroid(africa, byid=TRUE) # select big countries only africaBig <- africa[which(africa@data$AREA>75000), ] # Small manipulation to put it in a dataframe: centers <- cbind.data.frame(data.frame(gCentroid(africaBig, byid=TRUE), id=africaBig@data$FIPS)) # Show it on the map? par(mar=c(0,0,0,0)) plot(africa , xlim=c(-20,60) , ylim=c(-40,35), lwd=0.5 ) text(centers$x, centers$y, centers$id, cex=.9, col="#69b3a2")