Сделайте подборку из карты не-highmap-collection
Я пытался сделать карту хороплета с hcmap
из highcharter
пакет; Я получил полигоны из своего собственного шейп-файла, потому что это карта, которой нет в списке коллекции highmap.
Для этого сначала мне удалось преобразовать мой шейп-файл в файл GeoJson, как описано здесь: https://blog.exploratory.io/creating-geojson-out-of-shapefile-in-r-40bc0005857d
Позже мне удалось нарисовать карту с помощью пакета geosonio
как описано здесь: http://jkunst.com/highcharter/highmaps.html
Однако я не могу понять, как объединить фрейм данных со значениями в многоугольники, нарисованные на моей карте. Все доступные примеры объединяются с mapdata в формате data.frame, который я теряю при преобразовании в GeoJson.
Вот мой код до сих пор:
library(rgdal)
library(geojsonio)
library(highcharter)
#Get map from shapefile
Mymap <- readOGR(dsn="Mymap", "Mymap", verbose = FALSE) %>%
spTransform(CRS("+proj=longlat +ellps=GRS80 +datum=WGS84"))
#Transform to geoJson
MymapJSON <- geojson_json(Mymap)
#Use geojsonio to make data compatible with hcmap
Myhcmap <- jsonlite::fromJSON(MymapJSON, simplifyVector = FALSE)
Myhcmap<- geojsonio::as.json(Myhcmap)
#Draw map:
highchart(type = "map") %>%
hc_add_series(mapData = Myhcmap, showInLegend = T)
Результат:
¿Как я могу добавить дополнительные данные в GeoJson, чтобы я мог нарисовать хороплет?
1 ответ
Некоторое время назад я наконец-то нашел решение, оно было довольно простым, но поскольку не было хорошо документировано, как добавлять данные в GeoJSON, я покажу его здесь:
#Work with the map until this step:
Myhcmap <- jsonlite::fromJSON(MymapJSON, simplifyVector = FALSE)
#This part was unnecessary:
#Myhcmap<- geojsonio::as.json(Myhcmap)
#Then, write your map like this:
highchart() %>%
hc_add_series_map(Myhcmap, df, value = "value", joinBy = "ID")
Где:
df
это фрейм данных, который вы хотите добавить
value
имя столбца данных, которыми вы хотите раскрасить карту
joinBy
является ключевой переменной присоединения