###R package for geographical maps

This version 3 of the maps package. The main change with respect to v2 is a new world map. The old map legacy map is included and switching to “legacy” mode is explained below.



##FIXES - as of v3.1, map(…, fill=TRUE) no longer applies thinning. This removes small artefacts, but plotting worldHires becomes rather slow, should you ever want to plot a full world map at such a high resolution. - map.text(…, exact=TRUE) now behaves as documented. Previously, the “exact=TRUE” was not passed to the map drawing if add=FALSE. To get the old (non-documented) behaviour (plot map with exact=FALSE, write text for exact=TRUE) you should now use 2 commands: * > map(…, exact=FALSE) * > map.text(…, exact=TRUE, add=TRUE) - now works correctly for regions containing “:”. This was potentially broken due to locale-dependent behaviour of order(). - ‘world2’ now has clean boundaries when ‘fill=TRUE’.

##FALL BACK TO LEGACY WORLD DATABASE There are a few mechanisms to use the old ‘world’ database rather than the updated one, should that be necessary: - Using ‘database=legacy_world’ - Setting R_MAP_DATA_LEGACY=TRUE in the environment prior to loading maps - Deprecated: Calling world.legacy(TRUE) for switching to the old database and world.legacy(FALSE) to switch back on the fly.

The last two options should only be used as a temporary last resource, to quickly run code that requires the old database without having to edit it.

Note that the worldHires database from the mapdata package has identical map naming than the legacy world map. The only difference is in the resolution of the polylines. That high resolution version of the legacy map will remain unchanged.

Please inform the maintainer of any problem that requires a fallback to the legacy database!


Natural Earth also supports a high-resolution (1:10m) world map. Rather than replacing ‘worldHires’ (in the mapdata package), this data set is available from the package mapdataNE (not yet on CRAN but already available from

Even maps in e.g. shapefile format can now easily be imported for use in ‘map()’. For instance the package ‘maptools’ offers the function ‘readShapePoly()’, which reads a shapefile into a ‘SpatialPolygonsDataFrame’ that can be used as a map database (as of version 3.1).

##TO DO/DISCUSS: - Add ‘proj4’ support. This will have to be via a new argument e.g. . - Many islands remain nameless. - The naming convention is largely maintained, but some choices are different. The changes mean that e.g. /region=“France”/ now covers only metropolitan France, whithout (most of) the overseas departments and territories - Some inconsistencies in the naming procedure remain. For instance, while most countries are named by their full name, “UK” and “USA” are shortened in the same way as in the old data base. For UK, this even required a hack in the mapping code to avoid adding Ukrain to the map. - I’d like to find a way to get Antarctica show up a bit nicer, but whithout adding imaginary points that would be ruined in a projection or when changing the central meridian. For ‘world2’ such an extra closure libne has now been added. - The iso3166 table may have to be adapted for the Natural Earth 1:10 database, some extra rows have already been inserted.