求助: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
相关产品推荐
相关产品推荐

