R中的填充地图+位置图

filled map + location map in R

重新表述问题...我正在准备报告,其中一部分是空间,即。

我有 2 个数据集。 First(Scores) 是带有分数的国家。第二个(位置)是精确的经度和纬度,指的是这些国家内的确切位置。举个例子:

Scores = data.frame( Country = c("Lebanon","UK","Chille"), Score =c(1,3.5,5))
Locations = data.frame(Location_Name = c("London Bridge", "US Embassy in Lebanon" , "Embassy of Peru in Santiago"),
                       LONG = c(-0.087749, 35.596614, -70.618236), 
                       LAT = c(51.507911, 33.933586, -33.423285))

我想要实现的是获得填充的世界地图(在我的数据集中我有每个国家)并在其边界内用连续比例的分数(Scores$Score)着色。 最重要的是,我想从 Locations 数据框中添加图钉、气泡或任何位置标记。

所以我想要的结果是这个观点的组合:

和这个观点:

理想情况下,我还希望能够从 Locations data.frame 的 Locations 周围绘制 2km 半径。

我知道分开做,但似乎无法在一张漂亮干净的地图上实现。

我真的很感谢任何关于这方面的帮助或提示,在那个问题上卡了一整天

根据@agila 的建议,您可以使用 tmap 包。

首先将您的 Scores 数据与 World 合并,这样您就可以根据 Scores 数据填充国家/地区。请注意,您的 Country 列在合并时应与 World 中的 name 完全匹配。

您需要使用 sf 包中的 st_as_sf 使您的 Locations 成为要添加到地图的 sf 对象。

tm_dots可以显示点数。气泡的替代方法是 tm_bubbles.

library(tmap)
library(sf)

data(World)

Scores = data.frame(Country = factor(c("Mexico","Brazil","Chile"), levels = levels(World$name)), 
                    Score =c(1,3.5,5))
Locations = data.frame(Location_Name = c("Rio de Janeiro", "US Embassy in Lebanon" , "Embassy of Peru in Santiago"),
                       LONG = c(-43.196388, 35.596614, -70.618236), 
                       LAT = c(-22.908333, 33.933586, -33.423285))

map_data <- merge(World, Scores, by.x = "name", by.y = "Country", all = TRUE)

locations_sf <- st_as_sf(Locations, coords = c('LONG', 'LAT'))

tm_shape(map_data) +
  tm_polygons("Score", palette = "-Blues") +
  tm_shape(locations_sf) +
  tm_dots(size = .1)

地图