使用marmap包和getNOAA.bathy将测深线添加到ggplot

CDa*_*Dav 4 r map ggplot2

我想在我正在看的地图上添加测深线.我正在海岸附近绘制点,我们感兴趣的是它们离大陆架有多近.我见过一个名为Marmap的软件包 - 但现在我正在使用ggplot,因为它提供了更高的分辨率.

我见过获得测深线的代码是这样的:

library(marmap)

Peru.bath <- getNOAA.bathy (lon1 = -90, lon2 = -70, lat1 = -20, 
                            lat2 = -2, resolution = 10) 

plot(Peru.bath)
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码,我想添加测深线,如下所示:

coast_map <- fortify(map("worldHires", fill=TRUE, plot=FALSE))
gg <- ggplot()
gg <- gg + geom_map(data=coast_map, map=coast_map,
                    aes(x=long, y=lat, map_id=region),
                    fill="white", color="black") +
  theme(panel.background = element_blank()) + 
  theme(panel.grid.major = element_blank()) + 
  theme(panel.grid.minor = element_blank()) +
  theme(axis.text.x = element_blank(), axis.text.y = element_blank(), axis.ticks = element_blank())
gg <- gg + xlab("") + ylab("")
gg <- gg + geom_map(data=data.frame(region="Peru"), map=coast_map,
                    aes(map_id=region), fill="gray") 
gg <- gg + xlim(-90,-70) + ylim(-20,-2)
gg <- gg + coord_map()
gg
Run Code Online (Sandbox Code Playgroud)

因此,我认为它会

gg <- gg + Peru.bath
Run Code Online (Sandbox Code Playgroud)

但是我得到'错误:不知道如何将Peru.bath添加到情节'

NB为了说清楚,我没有测深数据,我只想将已知的货架线绘制到我创建的地图上,如果可能的话.

Ben*_*oit 8

我刚刚在github上更新了marmap的开发版本.你可以安装它:

library(devtools)
install_github("ericpante/marmap")
Run Code Online (Sandbox Code Playgroud)

autoplot.bathy()现在包括用ggplot2绘制水浴物体的功能.一定要查看它的帮助文件和示例,看看有什么可能.以下是您的数据集的示例dat:

library(marmap) ; library(ggplot2)
dat <- getNOAA.bathy(-90,-70,-20,-2,res=4, keep=TRUE)

# Plot bathy object using custom ggplot2 functions
autoplot(dat, geom=c("r", "c"), colour="white", size=0.1) + scale_fill_etopo()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述