tm_text 在 tmap 中产生重复文本

tm_text produces duplicate text in tmap

我正在尝试使用库 tmapthis dataset 制作地图。

this discussion 之后,我正在使用以下简单代码:

library(tmap)
library(geobr)
library(sf)

rg = st_as_sf(polygons_regioes_adm_sp)

tm_shape(rg) + 
  tm_polygons("regiao_administrativa",
              legend.show = F) +
  tm_text("regiao_administrativa", size = 1/2)

这会生成以下带有重叠 DUPLICATE 文本的地图。我尝试在 tm_text 中插入 remove.overlap = TRUE 但这并没有更好的效果。

此外,我收到以下消息:

old-style crs object detected; please recreate object with a recent sf::st_crs()

在这种情况下,如何获得没有重复文本的地图?

您使用 tmap 库显示地图的代码没有问题。问题是 sf 对象 polygons_regioes_adm_sp 混合了 POLYGONMULTIPOLYGON。因此,您只需要通过 运行 st_cast() 函数来简化 sf 对象。

至于投影问题,您只需指定EPSG代码即可将CRS的最近形式分配给sf对象(注意:至于警告信息- cf.below - 别担心,没关系)

所以,请找到下面的代码来正确显示行政区域的名称。

library(tmap)
library(sf)
library(dplyr) # please, do not forget to load this library


rg <- polygons_regioes_adm_sp %>% 
  st_set_crs(4674) %>% 
  st_cast()
#> old-style crs object detected; please recreate object with a recent sf::st_crs()
#> Warning: st_crs<- : replacing crs does not reproject data; use st_transform for
#> that

tm_shape(rg) + 
  tm_polygons("regiao_administrativa",
              legend.show = F) +
  tm_text("regiao_administrativa", size = 1/2)

reprex package (v2.0.1)

于 2021-11-13 创建