R语言 使用tmap软件包绘制欧洲Map

txu3uszq  于 2023-06-03  发布在  其他
关注(0)|答案(3)|浏览(219)

我想Map一些光栅数据使用tmap包。我的地理范围是欧洲和R找不到欧洲的Mapaltough我得到了最新版本的R和所有需要的软件包。我正在尝试这个:

library(tmap)
 data(Europe)
 tm_shape(Europe) + tm_fill()

上面写着

Error in as.list.environment(environment()) : object 'Europe' not found

我发现这种方法几乎在每个网站上都能做到,不知道为什么它不起作用。谢谢你的帮助!

ttp71kqs

ttp71kqs1#

自版本2以来,欧洲数据集已从{tmap}中删除。但它曾经住在那里,你仍然可以在许多较老的博客帖子中找到它,甚至如此的答案(恐怕包括我的)。
如果将{tmap}降级到1.11-2或更低版本,则可能会使其正常工作。
或者你可以从其他包建立欧洲形状,有很多。对于快速和肮脏的可视化,您可以考虑{rnaturalearth},对于更花哨的东西,考虑{giscoR},它与欧盟统计局接口。

world <- rnaturalearth::countries110
europe <- world[world$region_un=="Europe"&world$name!='Russia',]

library(tmap)

tm_shape(europe) + tm_fill()

arknldoa

arknldoa2#

也许你能找到一个有效的组合。这只是子集的一个样本。

library(tmap)

tm_shape(countries_spdf[countries_spdf@data$subregion == "Western Europe", ]) +
tm_borders()

tm_shape(countries_spdf[countries_spdf@data$subregion == "Eastern Europe", ]) +
tm_borders()

tm_shape(countries_spdf[countries_spdf@data$region == "Europe", ]) +
tm_borders()
kd3sttzy

kd3sttzy3#

我使用giscoR包,对于边界,我将giscoR包中gisco_get_nuts()函数的输出传递给t m_shape()函数。
通常,我通过使用https://geojson.io工具直观地选择感兴趣的区域来定义Map的BBOX并保存在geojson文件中
代码模板可能如下所示

library(sf)
library(geojsonsf)
library(giscoR)
library(tmap)
library(tmaptools)

map.bbox <- st_bbox(geojson_sf(geojson = "_data/bbox_europa_continental.geojson"))
country.ISO3_CODE <- gisco_countrycode %>% filter(continent == "Europe") %>% select(ISO3_CODE) %>% unlist(use.names = F)

gisco_get_nuts(country = country.ISO3_CODE, 
               spatialtype = "RG", nuts_level = 0) %>% 
  tm_shape(bbox = map.bbox) + tm_polygons() + tm_borders()

注:迄今为止,似乎giscoR包错过波斯尼亚和科索沃边界

相关问题