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

