【问题标题】:R Leaflet: Assign multiple groups to a layerR Leaflet:将多个组分配给一个图层
【发布时间】:2021-06-27 11:16:17
【问题描述】:

我正在尝试绘制包含多列分类变量的传单图。我为每个组分配一个复选框。但是复选框不能正常工作。 “A b”组包括三个点,但当“A b”复选框未选中时,只需删除1个点即可。为什么?

library(dplyr)
library(leaflet)
groups_all<-paste(
rep(LETTERS[1:2],each=3),
rep(letters[1:3],len=6),sep="     "
)

groups_all<-paste(
rep(LETTERS[1:2],each=3),
rep(letters[1:3],len=6)
)


data <- data.frame(Name1 = c("A", "A", "A", "B", "B", "B", "A", "B"),
        Name2 = c("a", "b", "b", "a", "b", "a", "b", "c"),
               Value1 = c(12,43,54,34,23,77,44,22),
               Value2 = c(6,5,2,7,5,6,4,3),
               Lat = c(51.1, 51.6, 57.3, 52.4, 56.3, 54.3, 60.4, 49.2),
               Lon = c(5, -3, -2, -1, 4, 3, -5, 0))


> data 
    Name1 Name2 Value1 Value2  Lat Lon
1     A     a     12      6 51.1   5
2     A     b     43      5 51.6  -3
3     A     b     54      2 57.3  -2
4     B     a     34      7 52.4  -1
5     B     b     23      5 56.3   4    
6     B     a     77      6 54.3   3
7     A     b     44      4 60.4  -5
8     B     c     22      3 49.2   0

data %>%
leaflet() %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addAwesomeMarkers(
lng = ~Lon ,
lat = ~Lat ,
#icon = ~logos[Name1 ,Name2],
group = c(~cbind(Name1 ,Name2) ,groups_all)
            
)%>% 
addLayersControl(
#baseGroups = c(""),
overlayGroups = groups_all,
options = layersControlOptions(collapsed = FALSE)
)

【问题讨论】:

    标签: r leaflet


    【解决方案1】:

    不确定您想用cbind 实现什么。相反,您可以简单地使用pasteName1Name2 创建您的组名。

    作为一个例子,我在输出上使用了hideGroup("A b"),它根据需要过滤掉所有三个点:

    library(dplyr)
    library(leaflet)
    
    groups_all<-paste(
      rep(LETTERS[1:2],each=3),
      rep(letters[1:3],len=6)
    )
    
    
    data <- data.frame(Name1 = c("A", "A", "A", "B", "B", "B", "A", "B"),
                       Name2 = c("a", "b", "b", "a", "b", "a", "b", "c"),
                       Value1 = c(12,43,54,34,23,77,44,22),
                       Value2 = c(6,5,2,7,5,6,4,3),
                       Lat = c(51.1, 51.6, 57.3, 52.4, 56.3, 54.3, 60.4, 49.2),
                       Lon = c(5, -3, -2, -1, 4, 3, -5, 0))
    
    foo <- data %>%
      leaflet() %>%
      addProviderTiles(providers$CartoDB.Positron) %>%
      addAwesomeMarkers(
        lng = ~Lon ,
        lat = ~Lat ,
        group = ~paste(Name1 ,Name2)
        
      )%>% 
      addLayersControl(
        overlayGroups = groups_all,
        options = layersControlOptions(collapsed = FALSE)
      )
    
    foo %>% 
      hideGroup("A b")
    

    【讨论】:

    猜你喜欢
    • 2020-10-30
    • 1970-01-01
    • 2022-10-06
    • 2020-01-22
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    相关资源
    最近更新 更多