【问题标题】:Make a choropleth from a non-highmap-collection map从非 highmap-collection 地图制作 choropleth
【发布时间】:2019-06-17 21:02:06
【问题描述】:

我一直在尝试使用来自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 格式的 mapdata,在转换为 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 以便绘制等值线?

【问题讨论】:

  • 嗨。这是一个带有官方 Highcharts 欧洲地图的演示。您可以看到这张地图的结构,并在底部看到我是如何使用 hc-key 代码连接数据的。您还可以使用 series.joinBy 属性并连接,例如,按名称。现在您可以检查您是否已正确创建地图并准备好数据。 jsfiddle.net/BlackLabel/uohn5k6b
  • 您的问题是关于使用highcharter 制作地图,还是关于在 GeoJSON 和 shapefile 之间合并数据?
  • @SymbolixAU 更多的是关于后者。

标签: r highcharts geojson r-highcharter


【解决方案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是连接键变量

【讨论】:

  • 非常感谢!
猜你喜欢
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
相关资源
最近更新 更多