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

tmap绘制地图时是否可以添加多个tm_compass()指北针?

tmap多指北针实现方案

tmap默认绘图逻辑中,单个绘图表达式仅支持渲染1个tm_compass()指北针元素,后续添加的同类型元素会被自动覆盖,这就是你测试时仅第一个指北针生效的原因。

要实现同一张地图显示多个不同类型的指北针,可以通过grid包的viewport叠加渲染功能实现,示例代码如下:

library(spData)
library(tmap)
library(grid)

# 生成基础底图
base_map <- tm_shape(nz) +
  tm_fill()

# 首次打印输出底图
print(base_map, vp = viewport())
# 逐个叠加不同类型的指北针,newpage=FALSE确保不新建画布
print(base_map + tm_compass(type = 'arrow', position = c(0.1, 0.9), size = 2), vp = viewport(), newpage = FALSE)
print(base_map + tm_compass(type = '4star', position = c(0.1, 0.8), size = 2), vp = viewport(), newpage = FALSE)
print(base_map + tm_compass(type = '8star', position = c(0.1, 0.7), size = 2), vp = viewport(), newpage = FALSE)
print(base_map + tm_compass(type = 'radar', position = c(0.1, 0.6), size = 2), vp = viewport(), newpage = FALSE)
print(base_map + tm_compass(type = 'rose', position = c(0.1, 0.5), size = 2), vp = viewport(), newpage = FALSE)

你可以根据实际需求调整每个tm_compass()的position(位置)、size(大小)、bg.color(背景色)等参数,避免指北针之间出现遮挡。

内容的提问来源于stack exchange,提问作者hugh-allan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:54:04