连接标签文本和tmap图中的点的线

时间:2018-02-19 04:43:07

标签: r sp tmap

我正在用形状文件做一个tmap图,我想绘制几个点,我有长拉特坐标到形状文件上。我的情节工作得很好,但是地图上有太多的点,这意味着不同点的标签文本是重叠的,并且通常不是特别清晰。

这是情节目前的样子。 enter image description here 我真的希望情节中的文本在实际地图之外,并通过细线连接到图中的点,它们融合到地图的整体美感中。

这是一些示例数据:

       name      long      lat
1  location -71.40909 41.82426
2  location -71.41959 41.82796
3  location -71.41277 41.79667
4  location -71.37327 41.81737
5  location -71.37170 41.89266
6  location -71.33356 41.87736

这是我必须显示以上情节的代码: 我们假设上面的数据帧是plot2_points.df,而shapes是底层的形状文件。

library(tmap)
library(sp)
library(rgdal)


coordinates(plot2_points.df) <- c("long", "lat")
proj4string(plot2_points.df) <- CRS("+proj=longlat +datum=WGS84")

plot2_points.df <- spTransform(plot2_points.df, CRS("+proj=utm +zone=19T ellps=WGS84"))

# plot
tm_shape(shapes) + tm_borders() + tm_shape(plot2_points.df) + tm_dots(col = "blue", size = 0.4) + tm_text("name", col = "blue", size = 0.75, just = "top", ymod = 0.75)

我无法找到任何接近这样做的功能。 tm_lines()不起作用,但我觉得这是针对完全不同的东西。也许,它可以用just =选项做一些事情吗?到目前为止我没有尝试过任何影响,所以我想我会在这里问。任何帮助将不胜感激,非常感谢:)

2 个答案:

答案 0 :(得分:0)

虽然您要求的确切解决方案(从文本注释中绘制细线)非常不切实际,而且(据我所知)在tmap中实现,您可以使用tm_symbols()代替{{1来改善基础问题并使用tm_dots()属性作为spa名称(shape将形状设置为#16 =一个点)。然后在标准图例中解释符号的含义。

这将是一个更多&#34; lege artis&#34;解决文本注释重叠问题的方法。

答案 1 :(得分:-1)

我同意这将是一个不错的功能。一种选择是设置auto.placement = TRUE,它将重新排列文本标签以使其不重叠。但是,它不会添加连接线。