Add a legend that for the sizing of symbols
Usage
addLegendSize(
map,
pal,
values,
title = NULL,
labelStyle = "",
shape = c("rect", "circle", "triangle", "plus", "cross", "diamond", "star",
"stadium"),
orientation = c("vertical", "horizontal"),
color,
fillColor,
strokeWidth = 1,
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",
...
)
sizeNumeric(values, baseSize)
sizeBreaks(values, breaks, baseSize, ...)
makeSizeIcons(
values,
shape = c("rect", "circle", "triangle", "plus", "cross", "diamond", "star",
"stadium"),
pal,
color,
colorValues,
fillColor,
opacity,
fillOpacity = opacity,
strokeWidth = 1,
baseSize,
...
)
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
shape of the color symbols
- 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
- ...
arguments to pass to
addControl for addLegendSize
pretty for sizeBreaks
makeSymbol for makeSizeIcons
- colorValues
the values used to generate color from the palette function
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 <-
makeSizeIcons(
quakes$depth,
shape = 'cross',
pal = numPal,
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'))