我正在用形状文件做一个tmap图,我想绘制几个点,我有长拉特坐标到形状文件上。我的情节工作得很好,但是地图上有太多的点,这意味着不同点的标签文本是重叠的,并且通常不是特别清晰。
这是情节目前的样子。 我真的希望情节中的文本在实际地图之外,并通过细线连接到图中的点,它们融合到地图的整体美感中。
这是一些示例数据:
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 =
选项做一些事情吗?到目前为止我没有尝试过任何影响,所以我想我会在这里问。任何帮助将不胜感激,非常感谢:)
答案 0 :(得分:0)
虽然您要求的确切解决方案(从文本注释中绘制细线)非常不切实际,而且(据我所知)在tmap中实现,您可以使用tm_symbols()
代替{{1来改善基础问题并使用tm_dots()
属性作为spa名称(shape
将形状设置为#16 =一个点)。然后在标准图例中解释符号的含义。
这将是一个更多&#34; lege artis&#34;解决文本注释重叠问题的方法。
答案 1 :(得分:-1)
我同意这将是一个不错的功能。一种选择是设置auto.placement = TRUE
,它将重新排列文本标签以使其不重叠。但是,它不会添加连接线。