这是我使用地图包制作北大西洋地图,我正在丢失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()
答案 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)。