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

使用tmap为CSV中各点位分配独立自定义图标失败的技术咨询

解决tmap中为每个点位分配独立图标的问题

问题根源

原代码核心问题有两个:一是循环中仅保留了最后一次迭代的图标变量,导致所有点位共用同一个图标;二是错误尝试将图标对象存入sf列,这并非tmap的正确用法。

修正后的代码

1. 读取并转换数据

points <- read.csv("dane_ikony.csv", header = TRUE)
points.sf <- st_as_sf(points, coords = c("x", "y"), crs = 4326)

2. 批量生成图标向量

直接用tmap_icons处理CSV中所有图标路径,生成对应每个点位的图标向量:

point_icons <- tmap_icons(points$Icon)

3. 静态地图代码

tm_shape(pl.map.sf) + 
  tm_polygons(col = "lightyellow1") +
  tm_shape(points.sf) +
  tm_symbols(shape = point_icons, size = 1.2, border.lwd = NA) +
  tm_grid(col = "gray", labels.size = 0.8) +
  tm_text("Nazwa", size = 0.8, root = F, just = 'top', auto.placement = T) + 
  tm_layout(title = "mapa Polski", 
            legend.text.size = 0.8, 
            legend.title.size = 0.8, 
            frame = TRUE) +
  tm_scale_bar(position = c("left", "bottom"))

4. 交互式地图代码

tmap_mode("view") 
tm_shape(pl.map.sf) + 
  tm_polygons(col = "lightyellow1") +
  tm_shape(points.sf) +
  tm_text("Nazwa", size = 0.8, root = F, just = 'top', auto.placement = T) + 
  tm_symbols(shape = point_icons, size = 1.2, border.lwd = NA) +
  tm_view(alpha = 0.5)

注意事项

  • 确保CSV中指定的图标文件(如krakow.png、wroclaw.png)位于当前R工作目录下,或使用完整文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:17:27