mapBubbles忽略了我的极限

时间:2014-09-29 16:12:31

标签: r dictionary plot rworldmap

我使用R中rworldmap包中的mapBubbles绘制欧洲地图。到目前为止,我可以在地图上绘制气泡,标记它们等等。但是,mapBubbles似乎忽略了我的xlim和ylim值:它不会让我缩放超过某一点。有没有办法解决这个问题?

mapBubbles(dF = df, nameX = "lon", nameY = "lat", nameZSize = "citySizes", nameZColour = c("black"), oceanCol = bcols[10], landCol = bcols[5], borderCol = "darkGrey", symbolSize=0.4, xlim = c(-20,40), ylim = c(30,72), addLegend = FALSE, lwdSymbols=2, fill = FALSE)

我希望我的欧洲地图有限制:xlim = c(-20,40), ylim = c(30,72)但它似乎给了我xlim = c(-20,45), ylim = c(20,80)之类的东西(注意y值)。

1 个答案:

答案 0 :(得分:0)

我认为这个问题有两个方面:

  1. 在R图中设置了轴限制时,在任一侧都将提供一个缓冲区。这可能是为了确保不会将任何恰好位于极限处的点切成两半(根据它们的大小可能看起来很奇怪)。要在y轴上解决此问题,可以将限制设置为(31.5,70.5)。 请参见下面的编辑内容

  2. 似乎由mapBubbles生成的图具有设定的尺寸。因此,x和y轴的放大百分比必须相同。为了尽可能近地放大x轴,最终会在y轴上放大得太远。

解决方案:如果您确实要删除多余的部分,则可以在图的边缘添加一些白色矩形。将y限制更改为上面问题1中显示的限制(或至少在我的计算机上有效)后,这将对您的示例有用:

rect(-35, 29, -20, 73, col = "white", border = NA)
rect(40, 29, 55, 73, col = "white", border = NA)

编辑: 对于R添加到轴限制的额外缓冲区,我找到了更好的解决方案。只需将图形参数更改即可,而不是将y轴的坐标从c(30,72)更改为c(31.5,70.5)。使用par(xaxs = "i", yaxs = "i")将删除该缓冲区(对于任何想知道的人,显然是4%)。矩形的代码无需更改。