我创建了一个传单 map ,现在需要自定义图例的顺序.默认情况下,leaflet按字母顺序排列图例顺序.在下面的示例中,我需要图例顺序为(from top to bottom):夏洛茨维尔、里士满、夏洛特、罗利.如何自定义传单图例顺序?

示例:

# 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)

enter image description here

  • Here is a link回答了一个类似的问题,以至于我无法开始工作

UPDATE:

按照上面链接的类似SO问题的答案,我可以重新排序图例,但现在图例 colored颜色 与 map 上的标记 colored颜色 不匹配.

例如,在下面的图例中,夏洛特是红色的,但在 map 上夏洛特是紫色的(即,夏洛特的图例 colored颜色 应该是紫色).需要能够定制重新排序的图例,并保持适当的 colored颜色 设置.

# 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)

^图例 colored颜色 与 map colored颜色 不匹配(即夏洛特在 map 上为紫色,但在图例中为红色).

推荐答案

您需要指定factorlevels参数,而不是labels参数:

ord <- factor(aa$city, levels = c('Charlottesville', 'Richmond', 'Charlotte', 'Raleigh'))

# Create custom colors for markers
pal <- colorFactor(c('springgreen', 'dodgerblue', 'red', 'purple'))

Map with markers properly colored

R相关问答推荐

R:对于没有数据的缓冲区,加权平均值为0

给定R中另一行中的值,如何插补缺失值

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

如何自定义Shapviz图?

在使用ggroove后,将图例合并在gplot中

通过使用str_detect对具有相似字符串的组进行分组

如何通过Docker部署我的shiny 应用程序(多个文件)

par函数中的缩写,比如mgp,mar,mai是如何被破译的?

即使硬币没有被抛出,也要保持对其的跟踪

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

SHINY:使用JS函数应用的CSS样式显示HTML表格

函数可以跨多个列搜索多个字符串并创建二进制输出变量

汇总数据帧中的复制列,保持行的唯一性

计算直线上点到参考点的总距离

列名具有特殊字符时的循环回归

如果COLSUM为>;0,则COLNAME为向量

使用gt_summary是否有一种方法来限制每个变量集进行配对比较?

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

如何筛选截止年份之前最后一个测量年度的所有观测值以及截止年份之后所有年份的所有观测值

通过匹配另一个表(查找表)中的列值来填充数据表,并在另一个变量上进行内插