R中Leaflet中聚集标记的聚合加权线串

2023-12-10

我正在尝试绘制位置和加权连接线串。当我放大或缩小时,标记的聚类会调整得很好。显示的集群标签是聚合的node_val的标记。

我想对线串做类似的事情,这样

  1. 该图不显示连接单个标记的蓝线,而是显示连接标记簇的线,并且
  2. 连接标记簇的新线串的宽度根据wgt多变的。

我希望下面的代码能够说明问题:

library(dplyr)
library(leaflet)
library(sf)

set.seed(123)
N <- 1000
N_conn <- 100

# data frame for points
df_points <- data.frame(id = 1:N,
                        lng = sample(c(11.579657, 16.370654), N, TRUE) + rnorm(N, 0, 0.5),
                        lat = sample(c(48.168889, 48.208087), N, TRUE) + rnorm(N, 0, 0.5),
                        node_val = sample(10, N, TRUE))


# data frame for connections
df_conn <- data.frame(id_from = sample(N_conn, replace = TRUE),
                      id_to   = sample(N_conn, replace = TRUE),
                      wgt  = abs(rnorm(N_conn)))

# drop connections where from and to ids are identical
df_conn <- subset(df_conn, id_from != id_to)

# add the coordinates for the connections (merging is not neccessary due to ordering of synth data)
df_conn$lat_from <- df_points[df_conn$id_from, "lat"]
df_conn$lng_from <- df_points[df_conn$id_from, "lng"]
df_conn$lat_to   <- df_points[df_conn$id_to, "lat"]
df_conn$lng_to   <- df_points[df_conn$id_to, "lng"]


sf_conn_from <- df_conn %>% 
  st_as_sf(coords=c("lng_from", "lat_from"))

sf_conn_to <- df_conn %>% 
  st_as_sf(coords=c("lng_to", "lat_to"))

sf_conn <- st_combine(cbind(sf_conn_from, sf_conn_to)) %>% 
  st_cast("LINESTRING")

st_crs(sf_conn) <- 4326

leaflet(df_points) %>% 
  addTiles() %>% 
  addMarkers(options = markerOptions(node_val = ~node_val), 
             label = quakes$mag,
             clusterOptions = markerClusterOptions(
               iconCreateFunction=JS("function (cluster) {    
                var markers = cluster.getAllChildMarkers();
                var sum = 0; 
                for (i = 0; i < markers.length; i++) {
                  sum += Number(markers[i].options.node_val);
                  //sum += 1;
                }
                sum = Math.round(sum);
                return new L.DivIcon({ html: '<div><span>' + sum + '</span></div>',
                  className: 'marker-cluster marker-cluster-medium', 
                  iconSize: new L.Point(40,40)});
              }")
             )) %>% 
  leafem::addFeatures(data = sf_conn,
                      color = 'blue',#~pal(rel_full$N_scale),#
                      weight = 1) 

感谢这两个问题的贡献者:

  • leaflet R,如何使与儿童统计相关的聚集图标出现?
  • 闪亮的传单添加大量分离的折线

这是调整线条权重的部分解决方案,我无法帮助对这些线条进行聚类:(

library(dplyr)
library(leaflet)
library(sf)

set.seed(123)
N <- 1000
N_conn <- 100

# data frame for points
df_points <- data.frame(id = 1:N,
                        lng = sample(c(11.579657, 16.370654), N, TRUE) + rnorm(N, 0, 0.5),
                        lat = sample(c(48.168889, 48.208087), N, TRUE) + rnorm(N, 0, 0.5),
                        node_val = sample(10, N, TRUE))


# data frame for connections
df_conn <- data.frame(id_from = sample(N_conn, replace = TRUE),
                      id_to   = sample(N_conn, replace = TRUE),
                      wgt  = abs(rnorm(N_conn)))

# drop connections where from and to ids are identical
df_conn <- subset(df_conn, id_from != id_to)

# add the coordinates for the connections (merging is not neccessary due to ordering of synth data)
df_conn$lat_from <- df_points[df_conn$id_from, "lat"]
df_conn$lng_from <- df_points[df_conn$id_from, "lng"]
df_conn$lat_to   <- df_points[df_conn$id_to, "lat"]
df_conn$lng_to   <- df_points[df_conn$id_to, "lng"]

geom <- lapply(1:nrow(df_conn),
  function(i)
    rbind(
      as.numeric(df_conn[i, c("lng_from","lat_from")]),
      as.numeric(df_conn[i, c("lng_to","lat_to")])
    )
) %>%
  st_multilinestring() %>%
  st_sfc(crs = 4326) %>%
  st_cast("LINESTRING")

sf_conn <- st_sf(df_conn,
                 geometry=geom)

#Modify weighting
sf_conn$cut=exp(sf_conn$wgt-1)



leaflet(df_points) %>%
  addTiles() %>%
  addMarkers(
    options = markerOptions(node_val = ~ node_val),
    label = quakes$mag,
    clusterOptions = markerClusterOptions(
      iconCreateFunction = JS(
        "function (cluster) {
                var markers = cluster.getAllChildMarkers();
                var sum = 0;
                for (i = 0; i < markers.length; i++) {
                  sum += Number(markers[i].options.node_val);
                  //sum += 1;
                }
                sum = Math.round(sum);
                return new L.DivIcon({ html: '<div><span>' + sum + '</span></div>',
                  className: 'marker-cluster marker-cluster-medium',
                  iconSize: new L.Point(40,40)});
              }"
      )
    )
  ) %>%   addPolylines(weight = sf_conn$cut,
                       data = sf_conn,
                       col = "blue")

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R中Leaflet中聚集标记的聚合加权线串 的相关文章

  • R foreach问题(某些进程返回NULL)

    我遇到了问题foreach我正在 R 中使用的程序的一部分 该程序用于运行不同参数的模拟 然后将结果返回到单个列表 然后用于生成报告 当并非所有分配的模拟运行都在报告上实际可见时 就会出现问题 从各方面来看 似乎只有分配的运行的一个子集实际
  • 纵向序列数据的三次样条方法?

    我有一个串行数据 格式如下 time milk Animal ID 30 25 6 1 31 27 2 1 32 24 4 1 33 17 4 1 34 33 6 1 35 25 4 1 33 29 4 2 34 25 4 2 35 24
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • r 中训练和测试数据的最小最大缩放/归一化

    我正在创建一个函数 它将训练集和测试集作为其参数 最小 最大缩放 标准化并返回训练集并使用这些same最小值和最小 最大范围的值 标准化并返回测试集 到目前为止 这是我想出的功能 min max scaling lt function tr
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • 计算 R 中各列的唯一值

    我正在尝试创建一个新变量 其中包含来自两个不同列的字符串值的唯一计数 所以我有这样的东西 例如 A tibble 4 x 2 names partners
  • 如何在 R 或 Python 中制作旭日图?

    到目前为止 我一直无法找到一个可以创建旭日图的 R 库约翰 斯塔斯科 http www cc gatech edu gvu ii sunburst 有人知道如何在 R 或 Python 中实现这一点吗 在极坐标投影中使用 matplotli
  • 为什么 R 更新后 sim_slopes() 中会出现此错误?

    我正在尝试使用 交互 包来创建简单斜率的约翰逊 尼曼图 但是 当尝试运行 sim slopes 函数时 出现以下错误 直到我将R更新到4 2 2 我才没有遇到这个问题 我使用的是 macOS Ventura 13 1 Error class
  • R 中用于调用 sed、rsync、ssh 等的 system() 的替代方案:函数是否存在,我应该编写自己的函数,还是我错过了重点?

    最近 我发现了base files命令 与其他命令一起使用 例如getwd write lines file show dir等等 似乎有许多 bash 函数的 R 等价物 我还在 R 中编写了一些函数来简化对ssh and rsync通过
  • 投资决策:R中的NPV、IRR、PB计算

    我正在尝试计算不同数量项目的净现值 NPV 内部收益率 IRR 和投资回收期 PB 时间 以评估哪个投资项目提供最佳回报 到目前为止 我可以为每个项目单独计算几行代码 但我想做的是 编写一个函数 它接受一个包含许多不同项目及其现金流的矩阵
  • 如何在将两根柱子保持在一起的同时熔化柱子?

    我有这种宽格式的数据 我想将其转换为长格式 Cond Construct Line Plant Tube shoot weight shoot Tube root weight root 1 Standard NA NA 2 199 95
  • 如何修复 R 中 Kaplan Meier 图的风险表计算错误

    以下是一个数据帧 其中 6 个参与者中的每一个都有唯一的 record ID 我想绘制一个生存分析图 其中包含感兴趣事件的复发以及在时间间隔 tstart 到 tstop 内 暴露 药物剂量 数值变量 的时间依赖性协变量 每个参与者的最大
  • 如何将plot中的单变量列表图表转换为ggplot2格式?

    我正在搜索 但仍然找不到一个非常简单的问题的答案 我们如何使用 R 中的 ggplot2 生成一个变量的简单线图 我正在分析时间序列数据 并且想要对图表进行更复杂的操作 我认为如果我使用 ggplot2 代替会更好plot It works

随机推荐

  • 如何在 Unix 中查找文件的大小并将其分配给变量

    我正在编写一个 Unix 脚本 它读取文本文件的大小 如果文件有一定大小 它应该打印文本文件 如果它不是一个else 执行一个循环并继续该过程 我正在使用以下命令来查找该文本文件的大小 ls l filepath filename lst
  • 使用 RAISERROR 终止 SQL 语句

    SQL 2005 raiserror 是否可以终止存储过程 例如 在大型系统中 我们得到了一个不希望输入到特定列中的值 在更新触发器中 如果您编写 如果存在 从插入中选择 其中 testcol 7 开始 raiseerror 我的自定义错误
  • Chart.js 画布调整大小

    In Android WebView HTML5 画布错误 我发布了一个有关使用 Graph js 库绘制图表的问题 我现在遇到的问题是 如果我多次调用该函数来绘制图形 则画布每次都会调整大小 每次将图形重新绘制到同一画布时 其大小也会发生
  • 80x86 中 SHL 和 SAL 的区别

    我已经学会了如何使用 80x86 汇编器 因此在按位移位操作中 我遇到了 SAL 和 SHL 使用的问题 我的意思是代码行之间的区别如下 MOV X 0AAH SAL X 4 MOV X 0AAH SHL X 4 什么时候应该使用SHL 什
  • Openerp 函数字段

    嘿 我是 openerp 的新手 我需要帮助来创建一个名为 Total 的函数字段 用于计算同一对象的所有字段的总和 例如 name hr performanzze columns p fields selection 1 Outstand
  • 将 PDO 与 MSSQL 服务器一起使用时出现“无法找到驱动程序”错误

    这个问题已经被问过很多次了 我已经经历了所有这些问题 但没有一个解决方案对我有用 基本上 使用 PDO 连接到 MSSQL 服务器时出现 找不到驱动程序 异常 以下是我的规格 Windows 8 64 Bit version MSSQL s
  • SWIG 无法识别字符串参数

    我有一个令人沮丧的问题 让我花了很多时间来处理它 但我没有找到任何解决方案 我想通过 SWIG 在 PHP 中使用 C 类 我生成了我的共享对象 它对于某些方法工作正常 但每当我使用字符串参数作为输入调用这些方法时 我都会遇到此错误 致命错
  • 如何通过xib将NSMutableArray绑定到ArrayController

    我是可可的新手 我正在显示一个简单的 Tableview 其中填充了 NSMutableArray 它绑定到 NSArrayController 如下所示 arrController bind contentArray toObject s
  • OutofMemoryError:位图大小超出 VM 预算 (Android)

    BitmapFactory 中出现异常 不确定是什么问题 好吧 我可以猜测这个问题 但不确定为什么会发生 ERROR AndroidRuntime 7906 java lang OutOfMemoryError bitmap size ex
  • 为什么 StringTemplate 会很慢?

    我使用 StringTemplate 作为我的 Web 应用程序的视图层 最近我测量了渲染页面所花费的时间 简单页面约为 50 毫秒 复杂页面约为 500 毫秒 这对于我的需求来说太多了 所以我正在寻找一种方法来提高 ST 的性能 我怎样才
  • 使用 XPath 提取节点值

    我想从 amazon com 的一个部分中提取每个项目的数据 仅节点值 而不是链接 我正在寻找的价值是内在的 span class narrowValue ul li style margin left 0px a href s ref s
  • chdir() 可以接受相对路径吗?

    在Linux上的C中 chdir 函数可以接受相对路径吗 是的 当前工作目录是进程的一个属性 稍微扩展一下 这里有一些相关的POSIX定义 The 当前工作目录被定义为 与进程关联的目录 用于不以斜杠字符开头的路径名的路径名解析 有关更多详
  • 如何更改自定义轨道生成器的源? (雷神)

    我正在制作一个自定义生成器来生成新的 Rails 应用程序 我是这样做的 require thor require rails generators rails app app generator class AppBuilder lt R
  • ORACLE SQL 使用窗口函数运行 TOTAL 和 daytotal

    从 EMPLOYEE 表中 我想对记录数量 雇用的员工 进行分组 并且还有每天的运行总数 输入的格式是这样的 rownum Hired date time 1 1 10 2012 11 00 2 1 10 2012 13 00 3 20 1
  • 如何比较 if 语句中的多个字符串?

    我正在尝试检查 if 语句中的多种可能性 用户输入一个字符串 然后我检查该字符串是否有多种可能性 if theString Seven seven 7 theInt 7 cout lt lt You chose lt lt theInt l
  • Scala isInstanceOf 和类型擦除

    我很困惑如何isInstanceOf在 Scala 中工作 如果我做这样的事情 val x Int 5 x isInstanceOf Int 鉴于 Scala 确实进行了类型擦除 那么 JVM 不应该在运行时删除所有类型信息吗 它不是all
  • 如何获取Windows启动时间? [复制]

    这个问题在这里已经有答案了 如何使用某些 WinAPI 函数在 C 中获取 Windows 启动时间 我目前正在使用命令 systeminfo 但我正在寻找更合适的解决方案 我检查了任务管理器是如何做到这一点的 结果发现它使用ZwQuery
  • C++ 优化中的代码重新排序何时停止?

    我已经阅读了很多关于优化代码中的代码执行保证的问题 所以我试图编译一个关于允许 阻止编译器重新排序代码序列的原因列表 我已经从通常正确的内容开始回答 但我没有添加标准中的引号 这是根据我的经验得出的 如果有任何忘记的内容或对现有的要点进行扩
  • 使用Python多处理在worker之间共享变量[重复]

    这个问题在这里已经有答案了 如何读取和更新Python中多个worker之间共享的变量 例如 我正在使用 Python 中的多个进程扫描文件列表 并且想检查父目录是否已被扫描 def readFile filename Add the pa
  • R中Leaflet中聚集标记的聚合加权线串

    我正在尝试绘制位置和加权连接线串 当我放大或缩小时 标记的聚类会调整得很好 显示的集群标签是聚合的node val的标记 我想对线串做类似的事情 这样 该图不显示连接单个标记的蓝线 而是显示连接标记簇的线 并且 连接标记簇的新线串的宽度根据