使用 tmap 绘图时最好使用最终的 SpatialPolygonsDataFrame 还是应该在 tmap 选项中进行更改?
Posted
技术标签:
【中文标题】使用 tmap 绘图时最好使用最终的 SpatialPolygonsDataFrame 还是应该在 tmap 选项中进行更改?【英文标题】:When plotting with tmap is it better to have the final SpatialPolygonsDataFrame or changes should be made within tmap options? 【发布时间】:2019-09-23 04:51:25 【问题描述】:我从 gadm.org 下载了一个空间多边形数据框,但地图有些过时,并且区域名称是拉丁文。我需要将名称更改为西里尔字母并合并一些区域。绘图时在空间多边形数据框或 tmap 上做这件事会更好吗?
到目前为止,我已经尝试从空间多边形数据框中提取单独的数据框并在那里进行更改,但我觉得我没有走上正确的道路。我知道我可以按照here 的解释使用 ggplot2 绘制这些图,但我找不到任何关于使用 tmap 可能的相同方法的参考。
【问题讨论】:
就“更好”而言,我是有偏见的,我会说用sf 包进行多边形操作总是更好,然后用你想要的任何东西进行绘图 -tmap
或 @ 987654324@ 或 leaflet
或 mapview
。也就是说,将每个包用于主要设计的内容。即使有可能,也不要期望用一个包做所有事情。所以,先获取你需要的或者绘图包需要的形状的数据,然后再绘制出来。
【参考方案1】:
很难量化“更好” - 但是如果您使用sf
包格式而不是sp
包中的空间多边形,您描述的工作肯定会更容易和更快。它也可以在 GADM 网站上找到。
sf
空间对象是修改后的数据框,这意味着您可以对它们应用标准数据整理方法 - 例如 dplyr::mutate()
来操作名称等。
至于合并区域,您可以使用基于 sf::st_union()
的工作流,我在一篇博文中描述过:https://www.jla-data.net/eng/dissolving-polygons-in-sf-environment/ - 它甚至使用 tmap
作为绘图工具,因此您应该找到熟悉的工作流程。
最后一个关于五年前关于使用 ggplot 绘制地图的问题的警告:使用 fortify()
的方法现在已经过时了,使用 当前 ggplot。
【讨论】:
以上是关于使用 tmap 绘图时最好使用最终的 SpatialPolygonsDataFrame 还是应该在 tmap 选项中进行更改?的主要内容,如果未能解决你的问题,请参考以下文章