Как я могу построить отдельные точки данных на карте, используя R / листовку? - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь показать отдельные точки в данном месте, как на карте, эквивалентной точечной диаграмме. Я попытался с leaflet библиотекой в ​​R, но я могу только сопоставить размер маркера с непрерывной переменной. Можно ли отобразить отдельные точки данных как кластеры вместо сопоставления размера маркера с непрерывной переменной?

Мои данные выглядят так

Lat,Lon,Place,People
19.877263,75.3390241,Aurangabad,1
20.2602939,85.8394548,Bhubaneshwar,2
30.7194022,76.7646552,Chandigarh,23
13.0801721,80.2838331,Chennai,25
11.0018115,76.9628425,Coimbatore,2
27.4844597,94.9019447,Dibrugarh,1
16.2915189,80.4541588,Guntur,1
17.3887859,78.4610647,Hyderabad,4
22.5677459,88.3476023,Kolkata,7
15.8309251,78.0425373,Kurnool,1
9.9256493,78.1228866,Madurai,1

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Вы можете использовать следующий код для точечного графика

leaflet(df) %>% addTiles() %>%
  addCircleMarkers(lng = ~Lon, lat = ~Lat, 
             popup = ~Place)

enter image description here

Данные

df = structure(list(Lat = c(19.877263, 20.2602939, 30.7194022, 13.0801721, 
11.0018115, 27.4844597, 16.2915189, 17.3887859, 22.5677459, 15.8309251, 
9.9256493), Lon = c(75.3390241, 85.8394548, 76.7646552, 80.2838331, 
76.9628425, 94.9019447, 80.4541588, 78.4610647, 88.3476023, 78.0425373, 
78.1228866), Place = structure(1:11, .Label = c("Aurangabad", 
"Bhubaneshwar", "Chandigarh", "Chennai", "Coimbatore", "Dibrugarh", 
"Guntur", "Hyderabad", "Kolkata", "Kurnool", "Madurai"), class = "factor"), 
    People = c(1L, 2L, 23L, 25L, 2L, 1L, 1L, 4L, 7L, 1L, 1L)), class = "data.frame", row.names = c(NA, 
-11L))
0 голосов
/ 11 апреля 2020

leaflet прекрасно работает с пакетом sf. Взяв образец ваших точек данных

lat <- c(19.877263, 20.2602939)
lon <- c(75.3390241, 85.8394548)
place <- c("Aurangabad", "Bhubaneshwar")

Вы можете преобразовать их в пространственный объект, используя пакет sf. Чтобы leaflet давал вам плитки, вам нужны координаты WSG84. Я предположил, что ваши данные были в этой системе координат.

library(sf)

df <- data.frame(lon, lat, place, stringsAsFactors = FALSE)
points <- st_as_sf(df, coords = c("lon", "lat"), crs = 4326)

Тогда легко построить график с помощью leaflet. Предполагая, что вам нужны маркеры, всплывающие из названия места при нажатии

library(leaflet)
leaflet(df) %>% addTiles() %>% addMarkers(popup = ~ place)

enter image description here

...