我试图在Polar立体投影中绘制北极地图。为此,我使用rGDAL包将已投影的shapefile导入R:
ds <- readOGR(dsn = path, layer = "10m_coastline_ps")
这会创建一个SpatialLinesDataFrame
。现在,当我使用SpatialLinesDataFrame
函数绘制此plot()
时,我无法使用xlim
和ylim
参数设置地图限制:
plot(ds, xlim=c(-1700000,1700000), ylim=c(-4000000,800000), axes=T)
plot()
功能会自动将宽高比设置为1并强制轴限制(如本文所述:igraph axes xlim ylim plot incorrectly)。这产生了以下图:
我在绘制SpatialLinesDataFrame之前尝试初始化绘图范围,如下所示:
mapExtentPr <- rbind(c(-1700000,-4000000), c(1700000,800000))
plot(mapExtentPr, pch=NA)
plot(ds, xlim=c(-1700000,1700000), ylim=c(-4000000,800000), axes=T, asp = 1, add=TRUE)
这设置了正确的限制但不保持纵横比。
我也尝试使用无效的clip()
函数。
有没有办法在保持宽高比为1的情况下精确设置绘图限制(不使用ggplot
或spplot
)?
注意:我已经检查了这个答案:Is it possible to change the ylim and xlim when the plot has already been drawn?
答案 0 :(得分:3)
我最终使用了这个:
xmin <- -1700000
xmax <- 1700000
ymin <- -4000000
ymax <- 100000
asratio = (ymax-ymin)/(xmax-xmin)
png("greenland_map.png",width=500,height=ceiling(500*asratio))
#plot basemap
plot(ne_10m_coastline_ps,xlim=c(xmin,xmax), ylim=c(ymin,ymax),
axes=TRUE,asp=1,xaxs="i",yaxs="i")
par(usr=c(xmin,xmax,ymin,ymax))
dev.off()