2

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

4

1 回答 1

1

我认为问题有两个方面:

  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%)。矩形的代码不需要更改。

于 2019-02-27T15:55:07.733 回答