Карта Highcharter R из настроенного шейп-файла - PullRequest
0 голосов
/ 02 октября 2018

У меня проблемы с импортом и соединением карты геоджона с некоторыми данными с использованием библиотеки highcharter.Я пытаюсь использовать уменьшенную версию набора данных sf, которую я получил, используя пакет tidycensus, который я затем загрузил в https://mapshaper.org/, чтобы уменьшить размер файла за счет уменьшения количества полигонов.После прореживания я экспортировал как geojson и импортировал в R.

Вот пример.Сначала я загружаю данные, используя tidycensus, создаю два набора данных, один для геометрии и один для атрибута интереса, здесь его средний доход семьи.Затем я экспортирую данные геометрии в так, чтобы я мог подать в maphapper для сокращения

#start with an example for one state

##pull geometry data for one state
md_data <- get_acs(geography = "tract",
                     state = "MD",
                     variables = "B19113_001",
                     geometry = T,
                     key = Sys.getenv("CENSUS_API_KEY"))

#data set of just GEOID and median family income for use in mapping
md_mfi <- as.data.frame(md_data) %>%
  mutate(median_family_income = case_when(is.na(estimate) ~ 0,
                                          TRUE ~ estimate)) %>%
  select(GEOID,median_family_income)


#slim down to just the geoid and the geometry data
md_tracts <- md_data %>%
  select(GEOID,geometry)

st_write(md_tracts, "U:/M1JPW00/GeoSpatial/census_tracts/acs_carto_2016/md_carto_tracts.shp")

После переформатирования в mapshaper я импортирую обратно в R

md_map_json <- jsonlite::fromJSON(txt = "FILEPATH/md_carto_tracts.json",simplifyVector = FALSE)


md_map_json <- geojsonio::as.json(md_map_json)

И затем пытаюсь построить карту на основе примера из документации высокого чартера здесь

> class(md_map_json)
[1] "json"     "geo_json"
> head(md_mfi)
        GEOID median_family_income
1 24001000100                54375
2 24001000200                57174
3 24001000300                48362
4 24001000400                52038
5 24001000500                46174
6 24001000600                49784

highchart(type = "map") %>%
  hc_add_series(mapData = md_map_json,
                data = list_parse(md_mfi),
                joinBy = "GEOID",
                value = "median_family_income",
                name = "Median Family Income")

Карта фактически отображается, и участки переписи окрашены в сплошной синий цвет, но данные ряда, похоже, не удачно объединяются даже с использованием list_parse или без него.

enter image description here

1 Ответ

0 голосов
/ 18 июня 2019

У меня была та же проблема, спросили здесь: Создайте галоплет из карты не-highmap-collection .Никто не ответил (я знаю!), Поэтому я наконец нашел решение, которое, я думаю, должно работать и для вас:

 #Work with the map you get until this step: 
  md_map_json <- jsonlite::fromJSON(txt = "FILEPATH/md_carto_tracts.json",simplifyVector = FALSE)

 #This part is unnecessary:
 #md_map_json <- geojsonio::as.json(md_map_json)

#Then, write your map like this:

highchart() %>%
 hc_add_series_map(md_map_json, md_mfi, value = "median_family_income", joinBy = "GEOID")
...