在tmap绘图中添加文本标签

7

我正在尝试给tmap绘图添加一些文本标签。

library(tmap)
library(raster)

jnk <- getData("GADM",country="IND",level=2)

map_file <- tm_shape(jnk) +
  tm_polygons() +
  tm_text("NAME_1", remove.overlap = TRUE)

我的问题是当我绘图时出现了重复的文字(由于我很新,不能发布图片)。 我认为我可能需要按某种几何和NAME_1组合进行分组,但我不确定接下来该怎么做。
任何建议都将是有益的!
2个回答

13

我不确定你的问题是什么(因为你无法发布图片),但请考虑以下代码:

library(tmap)
library(raster)


jnk <- getData("GADM",country="IND",level=1)

tm_shape(jnk) + tm_polygons("NAME_1", legend.show = F) +
  tm_text("NAME_1", size = 1/2)
我对您的代码进行了一些微小的更改:
  • 下载了一级详细信息而不是二级详细信息(区太多,州可以)
  • tm_polygons() 调用中删除了图例
  • 使 tm_text() 的字母更小(以适应东北部州)

enter image description here


0

可能是由于使用不同管理级别的标签而导致重复。您正在绘制第二级行政区域,但将它们命名为第一级。这意味着所有第二级行政区域都将具有与 shapefile 中的 NAME_1 标签相同的标签。解决此问题的一种方法是下载相应的行政区划 shapefile 并在绘制后严格使用该文件进行标注。

library(tmap)
library(raster)
## download Level 2 data
jnk <- getData("GADM",country="IND",level=2)
## download Level 1 data
jnk_L1 <- getData("GADM",country="IND",level=1)

map_file <- tm_shape(jnk) + 
tm_polygons(col="lightskyblue1",border.col = "gray70", lwd = 0.02, alpha=0.2) +
 tm_shape(jnk_L1)+tm_borders(col="gray40") + tm_text("NAME_1", remove.overlap = TRUE,size= 0.7) 

## Plot
map_file

Map of India with Level 1  labels


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接