R 自定义tm_compass()背景

R 自定义tm_compass()背景,r,maps,tmap,dismo,R,Maps,Tmap,Dismo,在下面的代码中,如何设置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"),

在下面的代码中,如何设置
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))
库(tmap)
图书馆(dismo)

看到CRAN手册,我认为不可能完成这项工作。我的解决方法是手动创建一个覆盖指南针的多边形。这是一项乏味的工作,但这也许是目前的方向。第一步是创建多边形
extent()
提供经度和纬度的最小值和最大值。我使用xmax和ymax为多边形指定了五个点。(我对值进行了处理,找到了最佳值。)我们需要为多边形指定一个正确的投影。如果在R控制台中键入
ny.map
,您将看到
coord。参考
。这是你需要的投影。然后,我使用
tm\u shape()
tm\u fill()
将多边形添加到地图中


lon从tmap版本3.1开始,支持定制
tm\u指南针()
(和
tm\u标尺()
)背景:

库(spData)
图书馆(tmap)
tm_形(elev)+
tm_光栅()
指南针(bg.color=“白色”,
bg.alpha=0.7,
type=“8star”,
位置=c(“左”、“下”),
尺寸=3)+
tm_布局(legend.show=FALSE)

我也找不到一个简单的方法;例如,
tm_text()
接受参数
bg.color
bg.alpha
和wish
tm_compass()
具有类似的特性。你的方法暂时有效。谢谢,我明白了。希望包中会有更新。如果您的案例已完成,请单击投票三角形下方的绿色勾号。这样,将来的读者就会知道解决方案是有效的。
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)