Cri*_*laz 5 r data-visualization heatmap leaflet
我使用leaflet(特别是leaflet.extras包中的addHeatmap()命令)和shiny制作了一些交互式热图。创建了所需的地图后,我想为其添加图例。
我感兴趣的是“rgb”图例,它基于由addHeatmap()从纯长/纬度坐标推导出的密度值。我需要的是像这张地图这样的东西 - https://www.patrick-wied.at/static/heatmapjs/example-legend-tooltip.html - 不幸的是我不了解 JS 并且无法重写这段代码R/包含针对我的问题的正确 JS 代码片段。
到目前为止我尝试的是addLegend()命令,它没有给出想要的结果,因为在这种情况下我需要指定一个变量来准备图例。我还尝试从创建的传单对象中提取颜色范围和分配的值,但没有成功。
以下是运行可重现示例的完整数据链接:https : //drive.google.com/file/d/1h3jL_PU6DGTtdIWBK02Tt37R7IB2ArH9/view
这是前 20 条记录:
structure(list(latitude = c(30.309522, 30.24429616, 30.30038194,
30.27752338, 30.23294081, 30.23038507,
30.34285933, 30.24962237, 30.26594744,
30.20515821, 30.22363485, 30.2759184,
30.28283226, 30.33816909, 30.26611565,
30.18835401, 30.26704789, 30.27456699,
30.19237135, 30.1925213),
longitude = c(-97.73171047, -97.77446858, -97.77885789,
-97.71919076, -97.58937812, -97.76581095,
-97.73598704, -97.72215443, -97.74144275,
-97.8782895, -97.78329845, -97.71321066,
-97.70820152, -97.82413058, -97.7327258,
-97.81606795, -97.68989589, -97.7580592,
-97.7816127, -97.73138523)),
.Names = c("latitude", "longitude"), row.names =
c(NA, 20L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
这是一个示例代码,我想通过上述功能对其进行扩展:
library(magrittr)
library(leaflet)
library(leaflet.extras)
data <- read.csv('DATA.csv')
leaflet(data) %>%
addTiles(group="OSM") %>%
addHeatmap(group="heat", lng = ~longitude, lat = ~latitude, max=.5, blur = 60)
Run Code Online (Sandbox Code Playgroud)
这是该代码的结果(在整个数据集上):
https://i.stack.imgur.com/6VFNC.jpg
所以总结一下我想做的事情:基于这样的图片,我想提取绘制颜色的范围以及分配给它们的值,并使用该信息绘制图例。
有什么我想念的吗?这看起来是一个非常简单的问题,但过去几个小时我一直在努力寻找解决方案。在此先感谢您的帮助!
编辑:扩展可重现的示例。
小智 0
您的示例数据没有任何值来实际映射密度叠加。
您可以指定 bin 的数量colorBin(),然后使用您的pal函数指定这些 bin。您可以根据您的发行版需求以不同方式设置垃圾箱data_values。的帮助部分colorBin()有助于确定满足您需求的正确参数。
bins <- c(0,1,2,3,4)
pal <- colorBin("Spectral", domain = data_value, bins = bins, na.color = "transparent")
m <-leaflet() %>%
addTiles() %>%
addHeatmap(lng= long_cords, lat = lat_cords, intensity = data_value,
blur = 20, max = 400, radius = 15, cellSize = 3) %>%
addLegend(pal = pal, values = data_value,
title="Heat map legend")
Run Code Online (Sandbox Code Playgroud)
您必须尝试使用addHeatmap参数才能获得正确的透明度和密度设置。