你能堆叠两个不同的ggmap地图吗?

时间:2016-12-31 13:36:38

标签: r ggplot2 ggmap

我有一个项目,我在其中使用ggmap绘制的地图上绘制一些数据。一切都很好,除了你可以获得的地图种类都不能完全满足我的需要。理想情况下,我希望将两个雄蕊地图类型“水彩”和“地形标签”融合在一起,然后才将它们用作ggplot绘图的背景。我可以通过以下方式获得2个地理数学地图:

library("ggmap")
library("ggplot2")
lon<-c(-71.50,-71.60)
lat<-c(42.40,42.50)
coords<-data.frame(lon,lat)
newmap1<-get_stamenmap(bbox = c(left = -71.63, bottom = 42.36, 
right = -71.10, top = 42.55), maptype="watercolor", zoom=13)

newmap2<-get_stamenmap(bbox = c(left = -71.63, bottom = 42.36, 
right = -71.10, top = 42.55), maptype="terrain-labels", zoom=13)

bbleft,bbright,bbbottom,bbtop表示任何有意义的坐标集。 现在我想将newmap2叠加到newmap1上(例如,使用alpha 0.5),然后使用它来绘制我的数据,就像我通常使用单个地图一样:

ggmap(newmap1) + geom_point(aes(x = lon, y = lat), data = coords, colour = "#f409d8", size = 1, alpha =0.8)

谢谢。

我在下面尝试过luke的代码,但这是我得到的图像: enter image description here

Luke:我现在更新了所有软件包,你的代码(转移到我的数据)也可以工作(谢谢你为此付出了很多努力!!!):

library("ggmap")
library("ggplot2")
lon<-c(-71.50,-71.60)
lat<-c(42.40,42.50)
coords<-data.frame(lon,lat)
newmap1<-get_stamenmap(bbox = c(left = -71.63, bottom = 42.36, right = -71.10, top = 42.55), maptype="watercolor", zoom=12)

newmap2<-get_stamenmap(bbox = c(left = -71.63, bottom = 42.36, right = -71.10, top = 42.55), maptype="toner-lite", zoom=12)
newmap2_ <- adjustcolor(newmap2, alpha.f = .5)
attributes(newmap2_) <- attributes(newmap2)
map <- expand.grid(lon = as.numeric(attr(newmap1, "bb")[, c("ll.lon", "ur.lon")]), lat = as.numeric(attr(newmap1, "bb")[, c("ll.lat", "ur.lat")]))
xmin <- attr(newmap1, "bb")$ll.lon
xmax <- attr(newmap1, "bb")$ur.lon
ymin <- attr(newmap1, "bb")$ll.lat
ymax <- attr(newmap1, "bb")$ur.lat
ggplot () + 
geom_blank(aes(x = lon, y = lat), data = map) + 
annotation_raster(newmap1, xmin, xmax, ymin, ymax) + 
annotation_raster(newmap2_, xmin, xmax, ymin, ymax)

唯一的问题是,地图的比例是错误的,纬度过度拉伸,导致地图异常: Map showing merging of the two maps 有没有解决方法?

1 个答案:

答案 0 :(得分:2)

这是一个模拟"@RequestMapping(value = "/login", method = RequestMethod.POST) public String login(Model model, @ModelAttribute("userR") User user, RedirectAttributes redirectAttrs) { 的可重复示例:

alpha = .5

enter image description here