r - R Leaflet:将多个组分配给一个图层
问题描述
我正在尝试绘制包含多列分类变量的传单图。我为每个组分配一个复选框。但是复选框不能正常工作。“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)
)
解决方案
不知道你想用cbind
. 相反,您可以简单地使用paste
从Name1
和创建您的组名Name2
。
作为一个例子,我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")
推荐阅读
- python - python用“”替换第一个字符
- python - 将 XML 转换为 CSV 时仅使用属性的一部分
- arrays - 在每个点处拆分字符串,除非出现某些单词
- ansible - 如何以模块化方式使用模板/blockinfile/lineinfile 构建配置
- angular - 如何防止 Windows 身份验证将浏览器重定向到 API URL?
- python - 我可以在数据框的列中使用模糊模糊来执行操作吗
- c# - Control.Invoke 不调用
- heroku - Heroku 无法部署 ENOENT
- javascript - 将纹理放在 obj 文件上
- apache-spark - 火花连接问题