如何在R中使用ggmap添加上下文(或任意)地图插图?

3
你好,
假设我在R中使用library(ggmap)制作这张地图:
ggmap(get_map(location = c(lon = -81.38630, lat = 19.30340), source = "stamen", maptype = "terrain", zoom = 14))

这句话的翻译是:“这就得到了:”

enter image description here

如何在此图像中添加一个小的上下文插图地图(可能靠近左上方?),以显示更广阔的地理区域?在这个小的插图中,我希望它有一个框,勾勒出大地图的位置。
谢谢您的帮助。
1个回答

5

这里是一种可能的解决方案,基于使用grid视口。

library(ggmap)
library(grid)

map1 <- get_map(location = c(lon = -81.38630, lat = 19.30340), 
        maptype = "terrain", zoom = 14)
map2 <- get_map(location = c(lon = -81.38630, lat = 19.30340), 
        maptype = "terrain", zoom = 12)

p1 <- ggmap(map1)
g1 <- ggplotGrob(p1)
grid.draw(g1)

pushViewport( viewport(x=0.25, y=0.8, w=.3, h=.3) )
xy <- data.frame(x=c(-81.41,-81.41,-81.36,-81.36,-81.41), 
       y=c(19.33,19.28,19.28,19.33,19.33))
p2 <- ggmap(map2) + 
      geom_path(data=xy, aes(x,y), color="red", lwd=1) + 
      theme_void()
g2 <- ggplotGrob(p2)
grid.draw(g2)
grid.rect(gp=gpar(col="white", lwd=5))
popViewport()

enter image description here


谢谢!这对我基本有用,但它绘制在我的现有图形之上(在我创建图形之前)。是否有一种方法可以开始一个全新的绘图,然后运行此代码? - hpy
2
@hpy 很高兴能帮助你!要打开一个新页面,请尝试使用 grid.newpage https://www.rdocumentation.org/packages/grid/versions/3.4.1/topics/grid.newpage - Marco Sandri
啊,我明白了,好的,我会记得使用 grid.newpage()。再次感谢! - hpy
顺便说一句,我发现 cowplot 包也可以实现这个功能:https://cran.r-project.org/web/packages/cowplot/vignettes/introduction.html - hpy

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