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

求助:tmap视图模式下去除或自定义图例的方法

在tmap的view模式下移除或自定义图例

方法1:完全移除图例

tmap的view模式基于leaflet,此时tm_layout的图例设置无效,需要在图层绘制函数中直接控制图例显示:

假设你原本的绘图代码类似这样:

tmap_mode("view")
tm_shape(KL_sf) +
  tm_symbols(col = "Year", size = "Mobility")

只需在tm_symbols(或你使用的tm_dots/tm_lines等图层函数)中添加legend.show = FALSE参数,即可移除右上角的图例面板:

tmap_mode("view")
tm_shape(KL_sf) +
  tm_symbols(col = "Year", size = "Mobility", legend.show = FALSE)

方法2:自定义图例(仅显示一次)

如果需要保留图例但只显示一次(而非每个年份图层重复显示),可以通过两种方式实现:

方式A:通过tmap内置参数统一图例

将年份设置为图层切换分组,让图例自动合并为一个:

tmap_mode("view")
tm_shape(KL_sf) +
  tm_symbols(
    col = "Year", 
    size = "Mobility", 
    legend.show = TRUE,
    group = "Year"  # 按年份分组切换,图例仅显示一次
  )

方式B:直接操作底层leaflet对象自定义图例

如果需要更灵活的图例位置/样式,可以先绘制tmap地图,再用leaflet的函数修改:

# 加载所需依赖包
library(leaflet)
library(viridis)

# 1. 绘制基础tmap地图
tmap_mode("view")
base_map <- tm_shape(KL_sf) +
  tm_symbols(col = "Year", size = "Mobility")

# 2. 移除所有默认图例
custom_map <- base_map %>% clearControls()

# 3. 添加自定义图例(示例:放在右下角,使用viridis配色)
custom_map %>% 
  addLegend(
    position = "bottomright",  # 可选位置:"topleft" "bottomleft"等
    pal = colorFactor(viridis(3), KL_sf$Year),
    values = KL_sf$Year,
    title = "Year"
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:27:02