There are many solutions to plot maps at country level, but in my case I want to print statistics at continent level.
The only thing that comes into my mind is to use the country level maps and use a list of countries for each continent, but I was wondering if there is any simple solution for this kind of maps. To implement my idea it would be like this:
## produce the world map
map()
## list of countries per continent
SA <- c("argentina", "bolivia", "brazil", "chile", "colombia", "ecuador", "guyana", "paraguay", "peru", "suriname", "uruguay", "venezuela")
map(regions = SA, fill=TRUE, add=TRUE)
rworldmap
has functions for plotting or aggregating data to regional levels including continents.
A simple start that should produce the plot below :
library(rworldmap)
#get coarse resolution world from rworldmap
sPDF <- getMap()
#mapCountries using the 'continent' attribute
mapCountryData(sPDF, nameColumnToPlot='continent')
Or for the 7 continents model :
mapCountryData(sPDF, nameColumnToPlot='REGION')
To aggregate your own data from country to regional level look at :
?mapByRegion
Following up on @Andy's answer, you could merge country polygons within each continent like so:
library(rworldmap)
library(rgeos)
library(maptools)
library(cleangeo) ## For clgeo_Clean()
sPDF <- getMap()
sPDF <- clgeo_Clean(sPDF) ## Needed to fix up some non-closed polygons
cont <-
sapply(levels(sPDF$continent),
FUN = function(i) {
## Merge polygons within a continent
poly <- gUnionCascaded(subset(sPDF, continent==i))
## Give each polygon a unique ID
poly <- spChFIDs(poly, i)
## Make SPDF from SpatialPolygons object
SpatialPolygonsDataFrame(poly,
data.frame(continent=i, row.names=i))
},
USE.NAMES=TRUE)
## Bind the 6 continent-level SPDFs into a single SPDF
cont <- Reduce(spRbind, cont)
## Plot to check that it worked
plot(cont, col=heat.colors(nrow(cont)))
## Check that it worked by looking at the SPDF's data.frame
## (to which you can add attributes you really want to plot on)
data.frame(cont)
# continent
# Africa Africa
# Antarctica Antarctica
# Australia Australia
# Eurasia Eurasia
# North America North America
# South America South America
library(sp) #Load your libraries
library(maptools)
#Download the continents shapefile
download.file("http://baruch.cuny.edu/geoportal/data/esri/world/continent.zip",
"cont.zip")
#Unzip it
unzip("cont.zip")
#Load it
cont <- readShapeSpatial("continent.shp")
#Plot it
plot(cont,
col=c("white","black","grey50","red","blue","orange","green","yellow"))
#Or any other combination of 8 colors