使用测深数据将ggplot2地图分层到ggmap卫星上

时间:2014-12-11 01:26:31

标签: r ggplot2 maps ggmap

好的,我希望将一张普通地图绘制到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

我之前使用过这种方法来添加测深多边形(参见上一个问题)但是当我将数据点绘制到海洋上时它们看起来很乱,所以我现在正在尝试这个。

如果有人有任何指示,甚至其他方式绘制其他ggmaps卫星的清晰水深数据,请告诉我:)

1 个答案:

答案 0 :(得分:2)

这是一种方法。使用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()

enter image description here