在宣传册中,我想将平均丰度显示为六边形。我在leaflet.extras2包中找到了“addHexbin”,但它似乎只计算每个hexbin中的记录数量。我真正想要的是求和,或者理想情况下是另一列“abun”的平均值。我考虑转换数据集,以便每个单独的丰度记录都有一行,但有些记录的丰度为20 k +这将导致一个非常大的数据集,它仍然不能计算每个六边形的平均丰度,在六边形内计算似乎是六元体的一个基本的必要功能,所以也许我错过了一些明显的东西。
library(leaflet)
library(leaflet.extras2)
n <- 100000
df <- data.frame(lat = rnorm(n, 42.0285, .01),
lng = rnorm(n, -93.65, .01),
abun = rnorm(n, 20000, 1000))
leaflet(df) %>%
addTiles() %>%
addHexbin(lng = ~lng, lat = ~lat,
options = hexbinOptions(
colorRange = c( "purple","blue","green", "yellow"),
radiusRange = c(1, 20)
))
我还尝试使用另一个非官方的R包Leaflethex,它具有所需的求和/平均值函数,但不能很好地集成到我的Shiny应用程序中,并导致一些奇怪的结果(侧边栏菜单项消失,不与传单代理一起工作)
1条答案
按热度按时间hfsqlsce1#
我找到的解决方案来自于Jared Lander的一个视频,他在视频中讨论了使用h3jsr h3六边形库作为基础六边形形状。数据被转换为空间对象,并与H3地址匹配。任何分析都可以在这个hexbin(平均值/总和)内完成,然后可以在leaflet中绘制。