此行为是由asp
的论证plot.bathy()
。默认情况下,它固定为asp = 1
确保两个轴上的比例相同(一经度等于一纬度)。这种默认设置的一个不受欢迎的后果是白色条带出现在图表的左/右侧,或者出现在顶部/底部,具体取决于测深图和绘图设备的尺寸。
所以我想你有两个选择:
- 如果你不介意视角稍微扭曲,你可以设置
asp = NA
在你的电话中plot.bathy()
- 如果您想要拥有正确的纵横比,但需要使用绘图区域的默认大小,则必须下载覆盖活动设备的整个绘图区域的测深区域。例如,您可以调用
plot.bathy()
一次创建“默认”绘图,然后使用par("usr")
确定填充整个绘图区域所需的测深极限。然后,您将下载具有适当经度和纬度范围的第二个测深数据。这可能是不可取的。
下面是第二个选项的代码:
atl <- getNOAA.bathy(-80.93645, -41.61417, 30.2, 60.905, resolution = 4)
blues <- colorRampPalette(c("darkblue", "cyan"))
greys <- colorRampPalette(c(grey(0.4), grey(0.99)))
plot(atl, image = TRUE, land = TRUE, n = 0,
bpal = list(c(0, max(atl), greys(100)),
c(min(atl), 0, blues(100))))
coord <- par("usr")
atl2 <- getNOAA.bathy(coord[1], coord[2], coord[3], coord[4], res = 4)
plot(atl2, image = TRUE, land = TRUE, lwd = 0.2,
bpal = list(c(0, max(atl2), greys(100)),
c(min(atl2), 0, blues(100))))
map(database = "state", col = "black", fill = FALSE, add = TRUE)
text(x = state.center$x, y = state.center$y, state.abb, cex = 0.5)
我认为 Roman Luštrik 提出的解决方案也有效,但它有一个不便之处,即让白色条纹在图的两侧都可见。
顺便说一句,如果您有很多测深区域要绘制,您也许应该考虑使用keep = TRUE
的论证getNOAA.bathy()
以避免每次需要重新执行代码时查询 NOAA 服务器(加载本地数据比加载远程数据要快得多)。您还可以一劳永逸地下载全球4Go ETOPO1并使用subset.bathy()
好吧,对每个地块所需的测深数据进行子集化。