заполненная карта + карта проезда в R

Перефразируя вопрос... Я готовлю отчет, и одна его часть пространственная, а именно.

У меня есть 2 набора данных. Сначала (баллы) это страны с их баллами. Второй (местоположение) - это точная долгота и широта, которые относятся к точному местоположению внутри этих стран. Пусть это будут примеры:

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))

Чего я хочу добиться, так это заполнить карту мира (в моем наборе данных у меня есть каждая страна) и раскрасить ее границы с помощью Score (Scores $ Score) в непрерывной шкале. Кроме того, я хотел бы добавить булавки, пузыри или любой другой маркер местоположения из кадра данных Locations.

Таким образом, моим желаемым результатом будет комбинация этого представления: Заполненная карта

и этот вид:

Карта местоположения

В идеале я хотел бы также иметь возможность рисовать радиус 2 км вокруг Locations from Locations data.frame.

Я знаю, что нужно делать их отдельно, но не могу добиться этого на одной хорошей чистой карте.

Я очень ценю любую помощь или советы по этому поводу, застрял на этом на целый день.


person M.wol    schedule 06.03.2020    source источник
comment
Привет! Можете ли вы поделиться воспроизводимым примером вашей проблемы? И что вы подразумеваете под точными геолокациями?   -  person agila    schedule 06.03.2020
comment
перефразирует вопрос :)   -  person M.wol    schedule 07.03.2020
comment
Примете ли вы решение с использованием других пакетов, таких как tmap?   -  person agila    schedule 07.03.2020
comment
Конечно, любой подход, который делает работу :)   -  person M.wol    schedule 07.03.2020


Ответы (1)


Как предложил @agila, вы можете использовать пакет tmap.

Сначала объедините ваши Scores данные с World, чтобы вы могли заполнять страны на основе Scores данных. Обратите внимание, что ваш столбец Country должен точно соответствовать name в World при слиянии.

Вам нужно будет использовать st_as_sf из пакета 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)

Карта

карта мира с заполненными странами и достопримечательностями

person Ben    schedule 08.03.2020
comment
А для буферов вы можете проверить st_buffer или просто увеличить размер точки если вас не волнует размер буфера. - person agila; 08.03.2020
comment
Это то, что я искал! Большое спасибо! - person M.wol; 09.03.2020