Skip to contents

About the data

A spatial data object contained in tmap is called World. It is a data frame with a row for each country. The columns are the following data variables plus an additional geometry column which contains the geometries (see sf package):

names(World)
#>  [1] "iso_a3"       "name"         "sovereignt"   "continent"    "area"        
#>  [6] "pop_est"      "pop_est_dens" "economy"      "income_grp"   "gdp_cap_est" 
#> [11] "life_exp"     "well_being"   "footprint"    "HPI"          "inequality"  
#> [16] "gender"       "press"        "geometry"

We specify this object with tm_shape (see other vignette) and for convenience assign it to s:

s = tm_shape(World, crs = "+proj=eqearth")

Scales: numeric data

Each visual variable, e.g. fill in tm_polygons can represent a data variable:

s + tm_polygons(fill = "HPI")

A scale defines how to map the data values to visual values. Numeric data variables (e.g. "HPI" which stands for Happy Planex Index) are by default mapped with a class interval scale to the polygon fill. This can be set explicitly with tm_scale_intervals, via which the intervals can be specified, as well as the visual values (in this case polygon fill colors):

s + tm_polygons(
  fill = "HPI",
  fill.scale = tm_scale_intervals(
    style = "fisher",      # a method to specify the classes
    n = 7,                 # number of classes
    midpoint = 38,         # data value mapped to the middle palette color
    values = "pu_gn_div"   # color palette; 
                           # run cols4all::c4a_gui() to explore color palettes
  ))

An alternative for numeric data variables is the continuous scale:

s + 
  tm_polygons(
    fill = "HPI",
    fill.scale = tm_scale_continuous(
      limits = c(10, 60),
      values = "scico.hawaii"))

Scales: categorical data

s + 
  tm_polygons(
    fill = "economy",
    fill.scale = tm_scale_categorical())

s + 
  tm_polygons(
    fill = "income_grp",
    fill.scale = tm_scale_ordinal(values = "matplotlib.summer"))