R自定义形状文件中的Highcharter贴图

R自定义形状文件中的Highcharter贴图,r,highcharts,geojson,shapefile,r-highcharter,R,Highcharts,Geojson,Shapefile,R Highcharter,我无法使用highcharter库将geojson映射导入并连接到某些数据。我正在尝试使用sf数据集的精简版本,我使用TidySensus软件包获得该数据集,然后上传到该软件包,通过细化多边形来减小文件大小。细化后,我导出为geojson并导入到R中 这里有一个例子。首先,我使用TidySensus下载数据,创建两个数据集,一个用于几何图形,另一个用于感兴趣的属性,这里是家庭收入中值。然后我将几何体数据导出到,以便可以将其输入mapshapper进行简化 #start with an examp

我无法使用highcharter库将geojson映射导入并连接到某些数据。我正在尝试使用sf数据集的精简版本,我使用TidySensus软件包获得该数据集,然后上传到该软件包,通过细化多边形来减小文件大小。细化后,我导出为geojson并导入到R中

这里有一个例子。首先,我使用TidySensus下载数据,创建两个数据集,一个用于几何图形,另一个用于感兴趣的属性,这里是家庭收入中值。然后我将几何体数据导出到,以便可以将其输入mapshapper进行简化

#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")
地图实际渲染,普查区域为纯蓝色,但即使使用或不使用列表解析,序列数据似乎也无法成功连接


我也有同样的问题,在这里被问到: . 没有人回应(我知道!),所以我最终找到了一个我认为也适用于你的解决方案:

 #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")
#使用您获得的地图,直到执行以下步骤:

md_map_json要简化某些步骤,您可以使用
库(geojsonsf)
进行sf-geojson转换,并使用
库(rmapshaper)
简化多边形。然后,所有内容都包含在R中,而无需从磁盘进出
> 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")
 #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")