【发布时间】:2016-08-23 01:20:04
【问题描述】:
我正在尝试使用 ggmap 来创建我正在工作的保护区的地图,并使用来自下方谷歌地球的卫星图像。除了缺少指北针和比例尺之外,我可以制作出非常令人满意的图像:
我知道添加这些元素的方法非常冗长(例如here),但肯定有更简洁的方法来做到这一点!
我尝试过使用map.scale 和north.arrow,但它们都给了我:
Error in polygon(xb + arrow.x * s, yb + arrow.y * s, ...) :
plot.new has not been called yet
我可以使用plot 让map.scale 和north.arrow 在base R 中工作,但是我无法正确绘制我的卫星图像。我也可以在基本 R 中使用 arrows 和 text 获得我想要的东西,但这些在 ggmap 中也不起作用。
我正在使用的代码如下。您将没有多边形(因此我不会将其包含在代码中),但您将能够加载谷歌地球图像并复制错误。
library(rgdal)
library(ggmap)
library(GISTools)
# Load satellite picture
map.centre <- c(lon = 35, lat = -2.5)
map <- get_map(location=map.centre, source="google", maptype="satellite", zoom = 8)
# Plot map
ggmap(map, extent= "device")
map.scale(xc= 34, yc= -3, len= 10, units= "Kilometers",
ndivs= 4, tcol= "black", scol= "black", sfcol="black")
north.arrow(xb= 35.5, yb= -1, len=100, lab="N")
通过阅读,map.scale 和 north.arrow 函数似乎无法将 ggmap 函数创建的窗口识别为打开的图形窗口。我做了一些研究并试图解决这个问题,但没有任何效果。有没有人能够建议一种方法来解决我收到的错误或在 ggmap 中获得比例尺和指北针而不使用数百行代码?
【问题讨论】:
-
ggsn软件包不适合您? (cran.rstudio.com/web/packages/ggsn) 另外,如果你真的很在意简洁,“简洁”就是少 3 个字符和 $BIGWORD。 -
这个对我有用:github.com/3wen/legendMap 我喜欢 ggsn 的外观,但与 legendMap 相比,要让它与 ggmap 一起工作实在是太麻烦了