层叠GGPLOT2地图上ggmap卫星与地形数据(Layering a ggplot2 map on

2019-10-21 09:40发布

好了,所以我希望绘制一个普通地图到ggmap基使得海洋显示地形数据。

library(maps)
library(mapdata)
library(ggplot2)
library(ggmap)

#pick out the base layer I want
get.Peru<-get_map(location = c(left = -85, bottom = -20, right = -70, top = -5), maptype="satellite") 

#this is the layer i wish to put over the top
coast_map <- fortify(map("worldHires", fill = TRUE, plot = FALSE)) 

peru_bathy_map <- fortify(get.Peru)

gg <- ggplot() 
gg <- gg + geom_map(data=peru_bathy_map, map=peru_bathy_map,
                    aes(map_id=id))  
gg <- gg + geom_map(data=coast_map, map=coast_map, aes(x=long, y=lat, map_id=region),
                    fill="gray", color="black") + xlim(-86,-70) + ylim(-20,-4) + labs(x="Longitude", y="Latitude") 
gg <- gg + coord_map() +  theme_classic()

但是,我得到的错误: Error: ggplot2 doesn't know how to deal with data of class ggmapraster ,当我尝试和运行设防码。

我已经使用这个方法前加水深多边形(参见前面的问题),但他们看上去凌乱,当我绘制数据点到海洋,所以我现在想这个。

如果任何人有任何指针,或者是策划cleanish寻找那ggmaps卫星请让我知道其他的深海测量数据甚至其他方式:)

Answer 1:

这是一种方法。 当您使用下载地图ggmap ,地图有类ggmapraster 。 看来,这是你不能申请fortify 。 看到你的代码,我想,这也许就是你想要做什么。 首先,你会得到一个地图秘鲁。 然后,你得到的数据绘制充满灰色秘鲁地图。 在这里,我子集数据仅供秘鲁。 最后,当我画这个图,我用ggmapgeom_map

library(mapdata)
library(ggmap)
library(ggplot2)

# Get Peru map
Peru <- get_map(location = "Peru", zoom = 5, maptype="satellite") 

# This is the layer I wish to put over the top
coast_map <- fortify(map("worldHires", fill = TRUE, plot = FALSE)) 

# Subset data for Peru
peru.coast <- subset(coast_map, region == "Peru")

# Draw a graphic
ggmap(Peru) +
geom_map(data = peru.coast, map = peru.coast, aes(x = long, y = lat, map_id = region),
         fill="gray", color="black") +
xlim(-86, -68) +
ylim(-20, 0) + 
labs(x = "Longitude", y = "Latitude") +
coord_map() +
theme_classic()



文章来源: Layering a ggplot2 map onto ggmap satellite with bathymetry data