The legacy maps
polygons are an unprojected plate carrée: they badly distort area and
split Russia, Fiji and New Zealand across the antimeridian. The
sf backend fixes all of this — real projections, equal-area
options, and an antimeridian-safe pipeline. These features require the
optional sf and rnaturalearth packages.
world_data(2020, c(gdp = "NY.GDP.PCAP.KD"), geometry = "sf") |>
world_map(gdp, style = "quantile", projection = "equal_earth",
title = "GDP per capita (Equal Earth projection)")world_map() auto-detects the sf backend and
applies the projection through ggplot2::coord_sf().
Available projections are "equal_earth" (the default —
equal-area and good-looking), "robinson",
"mollweide", "natural_earth",
"plate_carree", "mercator",
"winkel_tripel", "eckert4",
"gall_peters", "orthographic",
"azimuthal_equal_area", "north_polar" and
"south_polar".
globe_map() draws an orthographic globe centred on
lon/lat. The default "sf" backend
gives the cleanest limb; the "polygon" backend below needs
only maps + mapproj (no sf):
globe_map(world_snapshot$countries, continent, backend = "polygon",
style = "categorical", lon = 10, lat = 20)# With the sf backend (smoother limb, real great circles):
world_data(2020, geometry = "sf") |>
globe_map(gdp_per_capita, lon = 10, lat = 30)spin_globe() turns that into a rotating animation — one
globe_map() frame per central longitude, assembled into a
looping GIF with gifski (or magick):
world_geometry() returns projected, region-subset,
antimeridian-safe geometry without any data — country polygons,
label-ready centroids, coastlines, a graticule or an ocean
rectangle:
africa <- world_geometry("countries", geometry = "sf", region = "Africa",
projection = "equal_earth")
ggplot(africa) +
geom_sf(fill = "grey85", colour = "grey40", linewidth = 0.1) +
theme_world_map()A Pacific-centred world is one argument away; the sf
pipeline runs sf::st_break_antimeridian() before
projecting, so nothing streaks across the frame:
region accepts a continent, a group name
("EU", "OECD", …), a vector of
iso3c codes, or a bounding box
c(xmin, ymin, xmax, ymax), and picks a sensible projection
for it.