定制tm_compass()背景

3
在下面的代码中,我如何为tm_compass()设置背景颜色和透明度,就像我可以为地图标题做的那样?
library(tmap)
library(dismo)

ny.map <- gmap(x = "New York", zoom = 13, type = "satellite")

print(tm_shape(shp = ny.map) +
      tm_raster() +
      tm_compass(position = c("right", "top"),
                 type = "4star",
                 show.labels = 2) +
      tm_layout(title = "New York",
                title.bg.color = "white",
                title.bg.alpha = 0.5))

在这里输入图片描述 谢谢。

2个回答

3

看了CRAN手册,我认为这项工作不可能完成。我的解决方法是手动创建一个覆盖罗盘的多边形。这是一项繁琐的工作,但现在或许是这样做的方式。第一步是创建多边形。extent()可以为经度和纬度提供最小值和最大值。我使用xmax和ymax指定了一个五个点的多边形。(我试验了几个值找到了最佳值。) 我们需要为多边形分配正确投影。如果你在R Console中输入ny.map,你会看到coord. ref.。这就是你需要的投影。然后,我使用tm_shape()tm_fill()将多边形添加到地图上。

lon <- c(extent(ny.map)[2]-2100, extent(ny.map)[2]-250, extent(ny.map)[2]-250, extent(ny.map)[2]-2100, extent(ny.map)[2]-2100)
lat <- c(extent(ny.map)[4]-250, extent(ny.map)[4]-250, extent(ny.map)[4]-2100, extent(ny.map)[4]-2100,extent(ny.map)[4]-250)

foo <- SpatialPolygons(list(Polygons(list(Polygon(cbind(lon, lat))), ID = 1)),
                   proj4string = CRS("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"))

tm_shape(shp = ny.map) +
tm_raster() +
tm_shape(shp = foo) +
tm_fill("red", alpha = 0.4) +
tm_compass(position = c("right", "top"),
           type = "4star",
           show.labels = 2) +
tm_layout(title = "New York",
          title.bg.color = "white",
          title.bg.alpha = 0.5)

enter image description here


1
我也找不到一个简单的方法来做到这一点;例如,tm_text()需要参数bg.colorbg.alpha,而希望tm_compass()有类似的东西。你的方法暂时可行。谢谢。 - Manojit
@Manojit 我明白了。希望软件包会有更新。如果您的问题已经解决,请点击投票三角形下面的绿色勾号。这样,未来的SO读者就会知道该解决方案是有效的。 - jazzurro

1

tmap 版本 3.1 开始支持自定义 tm_compass()(和 tm_scale_bar())的背景。

library(spData)
library(tmap)

tm_shape(elev) +
  tm_raster() + 
  tm_compass(bg.color = "white", 
             bg.alpha = 0.7,
             type = "8star",
             position = c("left", "bottom"),
             size = 3) +
  tm_layout(legend.show = FALSE)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接