You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在marmap包的autoplot.bathy()中隐藏或淡化陆地?

解决autoplot.bathy绘制地中海时陆地干扰的问题

方法1:完全隐藏陆地

直接将bathy对象中海拔高于0的区域设为缺失值,ggplot渲染时会跳过这些区域,只保留海洋地形:

med <- getNOAA.bathy(lon1=-5, lon2=36.24583, lat1=30.25417, lat2=45)
# 把陆地(海拔>0)标记为缺失值
med[med > 0] <- NA

autoplot.bathy(med, geom=c("r", "c"), colour="white", alpha=0.7) + 
  scale_fill_etopo() +
  # 取消注释添加你的散点和分面设置
  # geom_point(aes(x=Longitude, y=Latitude, col=as.factor(class)), data=newdf, alpha=0.8) +
  # facet_grid(id ~ .) +
  xlab("Longitude") + 
  ylab("Latitude")

方法2:淡化陆地(保留轮廓但降低干扰)

如果不想完全去掉陆地,可自定义填充渐变,把陆地部分设为低存在感的浅色调,同时保留海洋的渐变效果:

med <- getNOAA.bathy(lon1=-5, lon2=36.24583, lat1=30.25417, lat2=45)

autoplot.bathy(med, geom=c("r", "c"), colour="white", alpha=0.7) + 
  scale_fill_gradientn(
    # 自定义配色:从深海蓝到浅海蓝,再到浅灰(陆地)
    colours = c("#00008B", "#1E90FF", "#87CEEB", "#F5F5F5"),
    # 映射海拔区间到颜色位置,0是海陆分界点
    values = scales::rescale(c(-8000, -2000, 0, 1000)),
    limits = c(-8000, 1000),
    guide = "colourbar"
  ) +
  # 后续图层
  xlab("Longitude") + 
  ylab("Latitude")

两种方法都不会破坏海洋的渐变效果,你可以根据需求选择。如果用方法1,后续添加散点和分面的代码直接取消注释即可正常运行。

内容的提问来源于stack exchange,提问作者Jcarroll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:43:26