R语言交互地图添加热力图图层(讲解篇)

热力图图层(Heatmap Layer)是 Leaflet 交互式地图里一个非常炫酷但又非常好实现的功能,尤其适合表示样点的密度、浓度或其他数值型变量的空间分布趋势。

我们可以用 leaflet.extras 包来加上热力图。它是 leaflet 的扩展包,不复杂,但加载的时候会给你一种“我很厉害”的假象。


🔥 一、安装必要包(如果你还没装)

install.packages("leaflet")
install.packages("leaflet.extras")

🧪 二、基本语法

leaflet() 后面加上这一句就能搞定热力图:

addHeatmap(lng = ~lon, lat = ~lat, intensity = ~SOC, blur = 20, max = 0.05, radius = 15)
  • lng, lat:经纬度;

  • intensity:用来做热力图强度的变量(比如你可以用 SOC,pH,粒有C 等);

  • radius:每个点的影响半径(像素);

  • blur:模糊程度;

  • max:热力图颜色最大值归一化(可调)。


💡 三、在之前的 Shiny 例子中加上热力图(上一个博客)

我们在 output$map <- renderLeaflet({...}) 里,加入 addHeatmap(),就像这样:

output$map <- renderLeaflet({
  leaflet(filtered_data()) %>%
    addTiles() %>%
    addHeatmap(
      lng = ~lon,
      lat = ~lat,
      intensity = ~SOC,       # 假设你想看 SOC 的热力分布
      blur = 20,
      max = max(soil_data$SOC),  # 或设为1,如果你不想归一化
      radius = 20
    ) %>%
    addCircleMarkers(
      ~lon, ~lat,
      popup = ~paste0(
        "<strong>样点ID:</strong> ", ID, "<br>",
        "<strong>pH:</strong> ", pH, "<br>",
        "<strong>SOC:</strong> ", SOC, "<br>"
      ),
      color = "darkgreen",
      radius = 5,
      fillOpacity = 0.7
    )
})

这段代码会在你的样点地图上加一层“热力云雾”,代表某个数值变量的空间强度分布,越亮的区域代表值越大。


🧨 四、想炫一点?支持多变量热图切换!

可以给用户提供下拉菜单选择热力图变量,比如:

selectInput("heat_var", "选择热力图变量", choices = c("SOC", "pH", "粒有C"))

然后 addHeatmap() 里的 intensity = ~get(input$heat_var)


☠️ 小提醒(不说会踩坑):

  • 热力图适合连续变量,不适用于分类变量;

  • 少于10个点的时候热力图会很丑,别怪它;

  • intensity 变量最好标准化一下(scale())不然会有一两个极端值主宰整张图;

  • 加热力图后建议保留原点(点图)一起显示,否则不知道哪里是哪。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chh0715

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值