Adds a colourbar to an existing map. Intended to be used in combination with
add_osm_surface
. At present, only plots on right side of map.
Usage
add_colourbar(
map,
barwidth = 0.02,
barlength = 0.7,
zlims,
cols,
vertical = TRUE,
alpha = 0.4,
text_col = "black",
fontsize = 3,
fontface,
fontfamily,
...
)
Arguments
- map
A
ggplot2
object to which the colourbar is to be added.- barwidth
Relative width of the bar (perpendicular to its direction), either a single number giving distance from right or upper margin, or two numbers giving left/right or lower/upper limits.
- barlength
Relative length of the bar (parallel to its direction), either a single number giving total length of centred bar, or two numbers giving lower/upper or left/right limits.
- zlims
Vector of (min,max) values for scale of colourbar. These should be the values returned from
add_osm_surface
.- cols
Vector of colours.
- vertical
If
FALSE
, colourbar is aligned horizontally instead of default vertical alignment.- alpha
Transparency level of region immediately surrounding colourbar, including behind text. Lower values are more transparent.
- text_col
Colour of text, tick marks, and lines on colourbar.
- fontsize
Size of text labels (in
ggplot2
terms; default=3).- fontface
Fontface for colourbar labels (1:4=plain,bold,italic,bold-italic).
- fontfamily
Family of colourbar font (for example, `
Times
').- ...
Mechanism to allow many parameters to be passed with alternative names (such as
xyz
forfontxyz
).
See also
Other map-extra:
add_axes()
,
osm_line2poly()
Examples
bbox <- get_bbox (c (-0.13, 51.5, -0.11, 51.52))
map <- osm_basemap (bbox = bbox, bg = "gray20")
# Align volcano data to lat-lon range of bbox
dv <- dim (volcano)
x <- seq (bbox [1, 1], bbox [1, 2], length.out = dv [1])
y <- seq (bbox [2, 1], bbox [2, 2], length.out = dv [2])
dat <- data.frame (
x = rep (x, dv [2]),
y = rep (y, each = dv [1]),
z = as.numeric (volcano)
)
map <- add_osm_surface (map,
obj = london$dat_BNR, dat = dat,
cols = heat.colors (30)
)
map <- add_axes (map)
# Note colours of colourbar can be artibrarily set, and need not equal those
# passed to 'add_osm_surface'
map <- add_colourbar (map,
zlims = range (volcano), cols = heat.colors (100),
text_col = "black"
)
print_osm_map (map)
# Horizontal colourbar shifted away from margins:
map <- osm_basemap (bbox = bbox, bg = "gray20")
map <- add_osm_surface (map,
obj = london$dat_BNR, dat = dat,
cols = heat.colors (30)
)
map <- add_colourbar (map,
zlims = range (volcano), cols = heat.colors (100),
barwidth = c (0.1, 0.15), barlength = c (0.5, 0.9),
vertical = FALSE
)
print_osm_map (map)