Skip to contents

Add a legend for the sizing of symbols or the width of lines

Usage

addLegendSize(
  map,
  pal,
  values,
  title = NULL,
  labelStyle = "",
  shape = "rect",
  orientation = c("vertical", "horizontal"),
  color,
  fillColor = color,
  strokeWidth = 1,
  opacity = 1,
  fillOpacity = opacity,
  breaks = 5,
  baseSize = 20,
  numberFormat = function(x) {
     prettyNum(x, big.mark = ",", scientific = FALSE,
    digits = 1)
 },
  group = NULL,
  className = "info legend leaflet-control",
  stacked = FALSE,
  data = leaflet::getMapData(map),
  ...
)

addLegendLine(
  map,
  pal,
  values,
  title = NULL,
  labelStyle = "",
  orientation = c("vertical", "horizontal"),
  width = 20,
  color,
  opacity = 1,
  fillOpacity = opacity,
  breaks = 5,
  baseSize = 10,
  numberFormat = function(x) {
     prettyNum(x, big.mark = ",", scientific = FALSE,
    digits = 1)
 },
  group = NULL,
  className = "info legend leaflet-control",
  data = leaflet::getMapData(map),
  ...
)

addLegendSymbol(
  map,
  pal,
  values,
  title = NULL,
  labelStyle = "",
  shape,
  orientation = c("vertical", "horizontal"),
  color,
  fillColor = color,
  strokeWidth = 1,
  opacity = 1,
  fillOpacity = opacity,
  width = 20,
  height = width,
  group = NULL,
  className = "info legend leaflet-control",
  dashArray = NULL,
  data = leaflet::getMapData(map),
  ...
)

Arguments

map

a map widget object created from 'leaflet'

pal

the color palette function, generated from colorNumeric

values

the values used to generate sizes and if colorValues is not specified and pal is given, then the values are used to generate colors from the palette function

title

the legend title, pass in HTML to style

labelStyle

character string of style argument for HTML text

shape

the desired shape of the symbol, See availableShapes

orientation

stack the legend items vertically or horizontally

color

the color of the legend symbols, if omitted pal is used

fillColor

fill color of symbol

strokeWidth

width of symbol outline

opacity

opacity of the legend items

fillOpacity

fill opacity of the legend items

breaks

an integer specifying the number of breaks or a numeric vector of the breaks

baseSize

re-scaling size in pixels of the mean of the values, the average value will be this exact size

numberFormat

formatting functions for numbers that are displayed e.g. format, prettyNum

group

group name of a leaflet layer group

className

extra CSS class to append to the control, space separated

stacked

If TRUE, symbols are overlayed onto each other for a more compact size legend

data

a data object. Currently supported objects are matrices, data frames, spatial objects from the sp package (SpatialPoints, SpatialPointsDataFrame, Polygon, Polygons, SpatialPolygons, SpatialPolygonsDataFrame, Line, Lines, SpatialLines, and SpatialLinesDataFrame), and spatial data frames from the sf package.

...

arguments to pass to

addControl for addLegendSize

pretty for sizeBreaks

makeSymbol for makeSymbolsSize

width

width in pixels of the lines

height

in pixels

dashArray

a string or vector/list of strings that defines the stroke dash pattern

Value

an object from addControl

Examples

library(leaflet)
data("quakes")
quakes <- quakes[1:100,]
numPal <- colorNumeric('viridis', quakes$depth)
sizes <- sizeNumeric(quakes$depth, baseSize = 10)
symbols <- Map(
  makeSymbol,
  shape = 'triangle',
  color = numPal(quakes$depth),
  width = sizes,
  height = sizes
)
leaflet() %>%
  addTiles() %>%
  addMarkers(data = quakes,
             icon = icons(iconUrl = symbols),
             lat = ~lat, lng = ~long) %>%
  addLegendSize(
    values = quakes$depth,
    pal = numPal,
    title = 'Depth',
    labelStyle = 'margin: auto;',
    shape = c('triangle'),
    orientation = c('vertical', 'horizontal'),
    opacity = .7,
    breaks = 5)
# a wrapper for making icons is provided sizeSymbols <- makeSymbolsSize( quakes$depth, shape = 'cross', fillColor = numPal(quakes$depth), color = 'black', strokeWidth = 1, opacity = .8, fillOpacity = .5, baseSize = 20 ) leaflet() %>% addTiles() %>% addMarkers(data = quakes, icon = sizeSymbols, lat = ~lat, lng = ~long) %>% addLegendSize( values = quakes$depth, pal = numPal, title = 'Depth', shape = 'cross', orientation = 'horizontal', strokeWidth = 1, opacity = .8, fillOpacity = .5, color = 'black', baseSize = 20, breaks = 5)
# Group layers control leaflet() %>% addTiles() %>% addLegendSize( values = quakes$depth, pal = numPal, title = 'Depth', labelStyle = 'margin: auto;', shape = c('triangle'), orientation = c('vertical', 'horizontal'), opacity = .7, breaks = 5, group = 'Depth') %>% addLayersControl(overlayGroups = c('Depth'))
# Polyline Legend for Size baseSize <- 10 lineColor <- '#00000080' pal <- colorNumeric('Reds', atlStorms2005$MinPress) #> Loading required package: sp #> Warning: package 'sp' was built under R version 4.3.2 leaflet() %>% addTiles() %>% addPolylines(data = atlStorms2005, weight = ~sizeNumeric(values = MaxWind, baseSize = baseSize), color = ~pal(MinPress), popup = ~as.character(MaxWind)) %>% addLegendLine(values = atlStorms2005$MaxWind, title = 'MaxWind', baseSize = baseSize, width = 50, color = lineColor) %>% addLegendNumeric(pal = pal, title = 'MinPress', values = atlStorms2005$MinPress)
# Stacked Legends leaflet(quakes) %>% addTiles() %>% addSymbolsSize(values = ~10^(mag), lat = ~lat, lng = ~long, shape = 'circle', color = 'black', fillColor = 'red', opacity = 1, baseSize = 5) |> addLegendSize( values = ~10^(mag), title = 'Magnitude', baseSize = 5, shape = 'circle', color = 'black', fillColor = 'red', labelStyle = 'font-size: 18px;', position = 'bottomleft', stacked = TRUE, breaks = 5)