在R中绘制没有边距的地图

我试图摆脱使用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()

如果取消注释map.axes()函数,您可以看到即使边缘被概念性地抑制,也为轴保留了空间.

任何想法都非常感激,这已经困扰了我多年.

最佳答案
在map函数中,mar再次重置(因此不遵循常规设置).您可以在地图功能中设置边距(参见?map).这给了你想要的:

map("world", border=0, ylim=c(-80, 80), fill=TRUE, 
     bg="gray", col="white",mar=rep(0,4))

在旁注中,如果您更改par的常规设置,则可以执行类似的操作

oldpar <- par(mar=rep(0,4)
... some plotting ...
par(oldpar)

将参数设置回原始参数.如果您编写自己的自定义绘图函数,这将特别有用.

转载注明原文:在R中绘制没有边距的地图 - 代码日志