tmap (version 2.1-1)

tm_view: Options for the interactive tmap viewer


Set the options for the interactive tmap viewer. Some of these options can also be set with tm_layout, since they are style dependent (e.g., the choice of basemaps). The function tm_view overrides these options when specified.


tm_view(alpha, colorNA, projection, symbol.size.fixed, dot.size.fixed,
  text.size.variable, bbox, set.bounds, set.view, set.zoom.limits,
  view.legend.position, control.position,, legend.position,
  basemaps = NULL, basemaps.alpha = NULL)



transparency (opacity) parameter applied to whole map. By default, it is set to 0.7 if basemaps are used, and 1 otherwise.


default color for missing values in interactive mode. If the color of missing values is not defined in the layer functions (e.g. tm_fill), then the default color is taken from the na value of the aes.color argument in tm_layout. This colorNA argument (if not NA itself) overrides that default value. For interactive maps, it can be useful to set colorNA to NULL, which means transparent.


projection. Either a EPSG number, or a leaflet_crs object created with leafletCRS. By default, the Web Mercator (3857) is used, since the vast majority of basemaps are rendered accordingly. Other standards are EPSG numbers 4326 (WGS84) and 3395 (Mercator). If set to 0, the projection of the master shape is used (see tm_shape) provided that a EPSG number can be extracted.


should symbol sizes be fixed while zooming?


should dot sizes be fixed while zooming?


should text size variables be allowed in view mode? By default FALSE, since in many applications, the main reason to vary text size is to prevent occlusion in plot mode, which is often not a problem in view mode due to the ability to zoom in.


bounding box. One of the following:

  • A bounding box (an sf bbox object, see st_bbox, a 2 by 2 matrix (used by the sp package), or an Extent object used by the raster package).

  • Open Street Map search query. The bounding is automatically generated by querying q from Open Street Map Nominatim. See

If set, it overrides set.view and all bbox arguments of tm_shape.


logical that determines whether maximum bounds are set, or a numeric vector of four values that specify the lng1, lat1, lng2, and lat2 coordinates (see setMaxBounds).


numeric vector that determines the view. Either a vector of three: lng, lat, and zoom, or a single value: zoom. See setView. Only applicable if bbox is not specified


numeric vector of two that set the minimum and maximum zoom levels (see tileOptions).


Character vector of two values, specifying the position of the legend. Use "left" or "right" for the first value and "top" or "bottom" for the second value. It overrides the value of legend.position of tm_layout, unless set to NA.


Character vector of two values, specifying the position of the layer control UI. Use "left" or "right" for the first value and "top" or "bottom" for the second value.

not used anymore. As of version 1.6, the popups are specified by the argument popup.vars in the layer functions tm_fill, tm_symbols, and tm_lines.


not used anymore, renamed to view.legend.position


Deprecated. Use tm_basemap instead, or set the default basemaps in tmap_options


Deprecated. See basemaps


Tennekes, M., 2018, tmap: Thematic Maps in R, Journal of Statistical Software, 84(6), 1-39, DOI

See Also



Run this code
# world choropleth/bubble map of the world
data(World, metro)
metro$growth <- (metro$pop2020 - metro$pop2010) / (metro$pop2010 * 10) * 100

map1 <- tm_shape(metro) +
	tm_bubbles("pop2010", col = "growth", 
		border.col = "black", border.alpha = .5, 
		style="fixed", breaks=c(-Inf, seq(0, 6, by=2), Inf),
		palette="-RdYlBu", contrast=1, 
		title.size="Metro population", 
		title.col="Growth rate (%)", id="name", 
		    popup.vars=c("pop2010", "pop2020", "growth")) + 

current.mode <- tmap_mode("plot")

# plot map

# view map with default view options

# view map with changed view options
map1 + tm_view(alpha = 1, basemaps = "Stamen.Watercolor")

# restore current mode
# }

Run the code above in your browser using DataLab