mapBubbles忽略了我的极限

问题描述 投票:2回答:1

我正在使用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值)。

r dictionary plot rworldmap
1个回答
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%,对于任何想知道的人)。矩形的代码不需要更改。

© www.soinside.com 2019 - 2024. All rights reserved.