从 non-highmap-collection 地图制作等值线
Make a choropleth from a non-highmap-collection map
我一直在尝试使用 highcharter
包中的 hcmap
制作等值线图;我从我自己的 shapefile 中获取了多边形,因为它是一张不在 highmap 集合列表中的地图。
为此,我首先设法将 shapefile 转换为 GeoJson 文件,如下所述:
https://blog.exploratory.io/creating-geojson-out-of-shapefile-in-r-40bc0005857d
后来我设法使用包 geosonio
绘制地图,如下所述:
http://jkunst.com/highcharter/highmaps.html#geojsonio-package
但是,我不知道如何将具有值的数据框合并到地图中绘制的多边形中。所有可用的示例都合并到 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 中以便绘制等值线?
前段时间我终于自己找到了解决方案,它相当简单,但由于没有很好地记录如何向 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
是加入键变量
我一直在尝试使用 highcharter
包中的 hcmap
制作等值线图;我从我自己的 shapefile 中获取了多边形,因为它是一张不在 highmap 集合列表中的地图。
为此,我首先设法将 shapefile 转换为 GeoJson 文件,如下所述: https://blog.exploratory.io/creating-geojson-out-of-shapefile-in-r-40bc0005857d
后来我设法使用包 geosonio
绘制地图,如下所述:
http://jkunst.com/highcharter/highmaps.html#geojsonio-package
但是,我不知道如何将具有值的数据框合并到地图中绘制的多边形中。所有可用的示例都合并到 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 中以便绘制等值线?
前段时间我终于自己找到了解决方案,它相当简单,但由于没有很好地记录如何向 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
是加入键变量