我创建了一个活页Map,现在需要自定义图例的顺序。默认情况下,leaflet
按字母顺序排列图例顺序。在下面的示例中,我需要图例顺序为(* 从上到下 *):夏洛茨维尔,里士满,夏洛特,罗利。如何自定义活页图例顺序?
范例:
# Import needed libraries
library(tidyverse)
library(leaflet)
# Create example dataset
aa <- data.frame(
city = c('Richmond','Charlottesville', 'Raleigh', 'Charlotte'),
lat = c(37.53,38.01,35.78,35.22),
lon = c(-77.44,-78.47,-78.63,-80.84))
# Create custom colors for markers
pal <- leaflet::colorFactor(c('springgreen', 'dodgerblue', 'red', 'purple'),
domain = c('Richmond','Charlottesville', 'Raleigh', 'Charlotte'),
ordered = TRUE)
# Make map
aa %>%
leaflet(options = leafletOptions(attributionControl = F,
zoomControl = F)) %>%
addTiles() %>%
addProviderTiles("Esri.WorldImagery") %>%
setView(-78.47,
36.53,
zoom = 7) %>%
addCircleMarkers(
lng = aa$lon,
lat = aa$lat,
label = aa$city,
fillColor = pal(aa$city),
fillOpacity = 1,
color = "black",
stroke = TRUE,
weight = 2,
radius = 5) %>%
addLegend('topright', pal = pal, values = aa$city, title = 'City', opacity = 1)
字符串
的数据
- Here is a link一个类似的问题,所以我不能去工作
更新:
根据上面链接的类似SO问题的答案,我能够重新排序图例,但是,现在图例颜色与Map上的标记颜色不匹配。
例如,在下面的图例中,夏洛特是红色的,但在Map上,夏洛特是紫色的(即,夏洛特的图例颜色应该是紫色的)。需要能够自定义重新排序图例并保持适当的颜色设置。
# Create a new grouping variable
ord <- factor(aa$city, labels = c('Charlottesville', 'Richmond', 'Charlotte', 'Raleigh'))
# Create custom colors for markers
pal <- colorFactor(c('springgreen', 'dodgerblue', 'red', 'purple'),
levels = ord, ordered = TRUE)
# Make map
aa %>%
leaflet(options = leafletOptions(attributionControl = F,
zoomControl = F)) %>%
addTiles() %>%
addProviderTiles("Esri.WorldImagery") %>%
setView(-78.47,
36.53,
zoom = 7) %>%
addCircleMarkers(
lng = aa$lon,
lat = aa$lat,
label = aa$city,
fillColor = pal(ord),
fillOpacity = 1,
color = "black",
stroke = TRUE,
weight = 2,
radius = 5) %>%
addLegend('topright', pal = pal, values = ord, title = 'City', opacity = 1)
型
的
^图例颜色与Map颜色不匹配(即夏洛特在Map上为紫色,但图例中为红色)。
1条答案
按热度按时间fcg9iug31#
您需要指定
factor
的levels
参数,而不是labels
参数:字符串
的数据