我正试图摆脱使用R中的'maps'包生成的地图边缘.我通过par(mar=c(0,0,0,0))在map()函数中设置和使用border = 0选项获得了一些方法.但与例如散射图相比,mar=c(0,0,0,0)仍然有很多额外的空间.以下是生成示例地图的一些代码,以及用于比较的常规散点图.
library(maps)
x <- sample(360, 10)-180
y <- sample(160, 10)-80
x.boundary <- c(-180, 180, 0, 0)
y.boundary <- c(0, 0, -80, 80)
pdf("map.tmp.pdf", width=9, height=4)
par(mar=rep(0,4))
map("world", border=0, ylim=c(-80, 80), fill=TRUE, bg="gray", col="white")
points(x, y, pch=19, col="blue")
points(x.boundary, y.boundary, pch=19, col="red")
# map.axes()
dev.off()
pdf("scatter.tmp.pdf", width=9, height=4)
par(mar=rep(0,4))
plot(x, y, xlim=c(-180, 180), ylim=c(-80, 80), pch=19, col="blue")
points(x.boundary, y.boundary, pch=19, col="red")
dev.off()
Run Code Online (Sandbox Code Playgroud)
如果取消注释该map.axes()功能,您可以看到即使边缘被概念性地抑制,也为轴保留了空间.
任何想法都非常感激,这已经困扰了我多年.
在map函数中,mar再次重置(因此不遵循常规设置).您可以在地图功能中设置边距(请参阅参考资料?map).这给了你想要的东西:
map("world", border=0, ylim=c(-80, 80), fill=TRUE,
bg="gray", col="white",mar=rep(0,4))
Run Code Online (Sandbox Code Playgroud)
在旁注中,如果您更改par的常规设置,则可以执行类似的操作
oldpar <- par(mar=rep(0,4)
... some plotting ...
par(oldpar)
Run Code Online (Sandbox Code Playgroud)
将参数设置回原始参数.如果您编写自己的自定义绘图函数,这将特别有用.