tm_text 在 tmap 中产生重复的文本
Posted
技术标签:
【中文标题】tm_text 在 tmap 中产生重复的文本【英文标题】:tm_text produces duplicate text in tmap 【发布时间】:2021-12-25 01:40:39 【问题描述】:我正在尝试使用库 tmap
和 this 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()
在这种情况下,我如何获得没有重复文本的地图?
【问题讨论】:
嗨@Marcos Junio,请提供minimal reproducible example,以便我们以最好的方式帮助您。谢谢 嗨@lovalery,感谢您的反馈。我提供了一个链接,可以访问我使用的数据,此外我还提供了我运行以获得该图的简单代码。这已经是一个可重现的例子。任何下载数据的人都可以轻松运行我的示例。 嗨@Marcos Junio。好的。对不起。实际上我不习惯使用.rda
文件。无论如何,主要的是我终于设法阅读了您的文件。所以,请在下面找到我对您的问题的回答。如果可以,请考虑将此答案标记为“已接受”和/或赞成。如果没有,请告诉我出了什么问题。干杯。
【参考方案1】:
您使用tmap
库显示地图的代码很好。问题是sf
对象polygons_regioes_adm_sp
混合了POLYGON
和MULTIPOLYGON
。因此,您只需要通过运行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 日创建
【讨论】:
@lovarery 我没有注意到数据中的细节。谢谢! 嗨@Marcos Junio。不客气。很高兴我能帮助你。我祝你工作顺利。干杯。以上是关于tm_text 在 tmap 中产生重复的文本的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft.Web.WebJobs.Publish 在部署包中产生重复的程序集