防止y轴标签被r map()切断

时间:2017-06-28 15:21:30

标签: r graphics maps

这是我使用地图包制作北大西洋地图,我正在丢失y轴的纬度标签。解决方案似乎是将边距扩展到左边,但调整par(mar())参数似乎对输出没有影响:无论我输入mar()的数字,边距保持不变。我试过从其他帖子中应用了许多建议,例如在图形设备之后定位par()函数,但无济于事,之前的帖子没有特别解决r映射中的问题。

    library(maps) # tool for maps
    library(mapdata) # all your basemaps are here

    Sample.Lat.lim=c(32,78.5)
    Sample.Long.lim=c(-77,43.5)

    png(filename = "NorthAtlantic.png", 
    width = 2400, height = 2400, res = 300, bg="white")

    par(mar = c(5,8,4,2)+0.1)

    map("worldHires", 
    xlim=Sample.Long.lim, ylim=Sample.Lat.lim, 
    col="grey", bg = "white" , 
    fill=TRUE, resolution=0)

    map.axes()
    map.scale(ratio = FALSE)

    title(main = "Map of the North Atlantic", xlab = "Longitude", ylab = 
    "Latitude")

    dev.off()

1 个答案:

答案 0 :(得分:0)

虽然我无法重现您的问题(即使使用png()我的输出看起来很好),map()在处理图形时有一些特殊的方法。我注意到了差异,例如在Linux上使用Rstudio或从命令行运行R时。

map()实际上需要" mar"作为参数并在绘制地图之前调整边距(和纵横比,...),默认值为mar = c(4.1, 4.1, par("mar")[3], 0.1),因此调整边距的方法是将它们作为map()调用中的参数传递:

map("worldHires", mar=c(5,8,4,2)+0.1 , ...)

顺便说一句,我只是想警告你" worldHires"是非常过时的世界地图(它有苏联,南斯拉夫......)。如果"世界"真的不够好四个你的目的,你想要一个更新的地图,你可能想要安装包rnaturalearth。然后就可以了

map(ne_countries(10), mar=c(5,8,4,2)+0.1 , ...)

标准"世界"对应于ne_countries(50)。