You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用经纬度坐标为地图点位添加按计数区分的颜色分段标识

R语言leaflet站点地图绘制代码修正方案

问题排查

原有代码存在4个核心错误:

  • cbind拼接字符、数值类型数据时,所有值被强制转换为字符型,count字段的数值大小判断逻辑完全失效
  • st_as_sf转换空间对象时未指定坐标列和坐标系,无法正确识别经纬度信息
  • 图标配置阶段调用getColor函数时传入了不存在的变量top100_start_station_cordinates,直接触发运行报错
  • 标注逻辑拆分了站点名称和计数的展示,不符合需求中同时标注两类信息的要求

修正后完整代码

# 未安装依赖包请先运行安装,已安装可跳过
install.packages(c("leaflet", "sf")) 

library(leaflet)
library(sf)

# 构造示例数据集,你的真实数据可直接替换该部分
start_stations <-
  data.frame(
    station = c("StreeterDr", "MichiganAve", "WellsSt"),
    lat = c(41.89228, 41.90096, 41.91213),
    lng = c(-87.61204,-87.62378,-87.63466),
    n = c(23000, 56780, 34520)
  )

# 整理目标数据集,保留各字段原始类型
dfs <- data.frame(
  lon = start_stations$lng,
  lat = start_stations$lat,
  name = start_stations$station,
  count = start_stations$n
)

# 转换为sf空间对象,指定坐标列和WGS84坐标系
dfs<- st_as_sf(dfs, coords = c("lon", "lat"), crs = 4326)

# 计数到颜色的映射函数
getColor <- function(dfs) {
  sapply(dfs$count, function(count) {
    if(count <= 20000) {
      "green"
    } else if(count <= 30000) {
      "orange"
    } else {
      "red"
    } })
}

# 图标配置,传入正确的数据集参数
icons <- awesomeIcons(
  icon = 'ios-close',
  iconColor = 'black',
  library = 'ion',
  markerColor = getColor(dfs)
)

# 绘制地图,弹窗同时展示站点名称和计数值
leaflet(dfs) %>% 
  addTiles() %>%
  addAwesomeMarkers(
    icon=icons, 
    popup = ~paste0("站点名称:", name, "<br>计数值:", count), 
    label=~as.character(count)
  )

内容的提问来源于stack exchange,提问作者KalsaraL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:45:04