Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 小叶簇标记间距,或缩小时如何拥有较小的组_R_Leaflet - Fatal编程技术网

R 小叶簇标记间距,或缩小时如何拥有较小的组

R 小叶簇标记间距,或缩小时如何拥有较小的组,r,leaflet,R,Leaflet,使用聚集标记制作传单地图。 markerClusterOptions()中是否有一个参数可以根据缩放级别控制组的数量?例如,默认情况下,“缩放我的地图”仅显示3个簇,用于1800次观测。不过,如果在默认缩放时集群数量至少是原来的两倍,那就太好了 我不想使用freezeAtZoom,因为这样用户就无法放大和查看每个单独的观察结果 数据来源: library(tidyverse);图书馆(单张);图书馆(lubridate) 罪案调查组报告% 突变(datetime=mdy\U hms(incide

使用聚集标记制作传单地图。 markerClusterOptions()中是否有一个参数可以根据缩放级别控制组的数量?例如,默认情况下,“缩放我的地图”仅显示3个簇,用于1800次观测。不过,如果在默认缩放时集群数量至少是原来的两倍,那就太好了

我不想使用freezeAtZoom,因为这样用户就无法放大和查看每个单独的观察结果

数据来源:

library(tidyverse);图书馆(单张);图书馆(lubridate)
罪案调查组报告%
突变(datetime=mdy\U hms(incident\U datetime))%>%
安排(日期时间)
传单(汽车盗窃)%>%addTiles()%>%
添加标记(
popup=~粘贴(如.character(事件日期时间),“,”,“案例编号”,如.character(案例编号)),
label=~as.character(地址_1),
clusterOptions=markerClusterOptions()
)

R
传单
打包文档,通过名为
传单.markercluster的传单javascript库插件进行聚类,并记录在案。R
手册
包中的许多函数提到,
..
中的附加参数将被传递到底层javascript库,但要使用这些函数,了解javascript文档是很有帮助的。对于集群,您正确地注意到
markerClusterOptions
将传递更高级的选项

markercluster
文档说有一个参数
maxClusterRadius

簇从中心标记覆盖的最大半径(以像素为单位)。默认值为80。减少会产生更多更小的集群。还可以使用接受当前贴图缩放并返回最大簇半径(以像素为单位)的函数

所以我在几个选项上搞砸了。我的RStudio视图窗格中的屏幕截图:

默认半径为80像素:

leaflet(car_burglaries) %>% 
  addTiles() %>% 
  addMarkers(
    popup = ~paste(as.character(incident_datetime),",","Case number",as.character(case_number)), 
    label = ~as.character(address_1),
    clusterOptions = markerClusterOptions()
  )

半径越小=簇越多:

leaflet(car_burglaries) %>% 
  addTiles() %>% 
  addMarkers(
    popup = ~paste(as.character(incident_datetime),",","Case number",as.character(case_number)), 
    label = ~as.character(address_1),
    clusterOptions = markerClusterOptions(maxClusterRadius = 50)
  )
leaflet(car_burglaries) %>% 
  addTiles() %>% 
  addMarkers(
    popup = ~paste(as.character(incident_datetime),",","Case number",as.character(case_number)), 
    label = ~as.character(address_1),
    clusterOptions = markerClusterOptions(maxClusterRadius = 200)
  )

半径越大=簇越少:

leaflet(car_burglaries) %>% 
  addTiles() %>% 
  addMarkers(
    popup = ~paste(as.character(incident_datetime),",","Case number",as.character(case_number)), 
    label = ~as.character(address_1),
    clusterOptions = markerClusterOptions(maxClusterRadius = 50)
  )
leaflet(car_burglaries) %>% 
  addTiles() %>% 
  addMarkers(
    popup = ~paste(as.character(incident_datetime),",","Case number",as.character(case_number)), 
    label = ~as.character(address_1),
    clusterOptions = markerClusterOptions(maxClusterRadius = 200)
  )

如果将鼠标悬停在标记上时具有显示覆盖区域的默认设置,则该设置应有助于计算所需的半径


值得注意的是,半径是在地图当前显示时以像素为单位测量的。这意味着显示的簇数将取决于地图的大小(以像素为单位)。如果您需要更复杂的东西,比如将半径设置为与窗口大小成比例,这样用户可以调整窗口大小,同时保持集群数量大致不变,您可以编写一个函数将该半径作为变量传入,也可以用javascript编写并以某种方式传入。我将把它留到另一个帖子。

添加了软件包和代码谢谢你这么做。这是一个很好的问题。我删除了我现在已经过时的评论,撤销了我的反对票,并对其投了更高的票。我希望它能得到一个答案,因为我最初的尝试并没有成功。即使它先得到答案,我也可能会给它一笔可观的赏金。如果我现在尝试一个答案,我可能会在Camille的代码中进行实验。Camille的答案对我来说很好(我可能会奖励奖金),但我不是一个普通用户。你觉得怎么样?谢谢。似乎解决了这个问题。我只是暂缓获奖,因为我无法逆转它,我想有人可以提出一个更好的答案。我见过这个函数,但不知道簇半径会如何影响输出。@42-没问题&不必着急。其他人可能会根据窗口大小设置一个函数来缩放半径——我对此没有明确的想法——这个答案对于我的目的来说已经足够了。非常感谢。我原以为几天前我已经授予了它,但收到了一个警告,它即将到期,所以我再次尝试授予它。