首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据与SpatialPolygonsDataFrame对象列表进行匹配,以便在传单中运行一张合唱图

将数据与SpatialPolygonsDataFrame对象列表进行匹配,以便在传单中运行一张合唱图
EN

Stack Overflow用户
提问于 2018-01-06 01:49:45
回答 1查看 290关注 0票数 1

我教自己如何在R中使用映射工具,在这种情况下,我希望根据以下mydata数据框架的结果,在各自的区域级别建立各国的副图。

请注意,我实际上是在30个国家运行这个项目。我只是为了可复制的目的而限制在这里的两个国家。另外,请注意,getData函数将从GADM.org网站下载。

代码语言:javascript
复制
library(sp)
library(raster)
library(tidyverse)
library(leaflet)

France_map <- getData(name = "GADM", country = "FRA", level = 1)
Germany_map <- getData(name = "GADM", country = "DEU", level = 1)

all_maps <- list(France_map, Germany_map)

mydata <- dput(structure(list(cntry = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
  1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
  2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Germany", "France"), 
  class = "factor"), region_name = structure(1:37, .Label = c("Baden-Württemberg", 
  "Bayern", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hessen", "Mecklenburg-Vorpommern", 
  "Niedersachsen", "Nordrhein-Westfalen", "Rheinland-Pfalz", "Saarland", "Sachsen", 
  "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen", "Île-de-France", "Champagne-Ardenne", 
  "Picardie", "Haute-Normandie", "Centre", "Basse-Normandie", "Bourgogne", 
  "Nord-Pas-de-Calais", "Lorraine", "Alsace", "Franche-Comté", "Pays de la Loire", 
  "Bretagne", "Poitou-Charentes", "Aquitaine", "Midi-Pyrénées", "Limousin", 
  "Rhône-Alpes", "Auvergne", "Languedoc-Roussillon", "Provence-Alpes-Côte d'Azur"), 
  class = "factor"), prop = c(0.0771812080536913, 0.0808625336927224, 0.154200131820421, 
  0.143712574850299, 0.125, 0.1875, 0.160220994475138, 0.201612903225806, 
  0.149122807017544, 0.140562248995984, 0.111111111111111, 0.130434782608696, 
  0.162454873646209, 0.141891891891892, 0.164835164835165, 0.0810810810810811, 
  0.320361006883289, 0.173944002182893, 0.267984998166555, 0.145696294975402, 
  0.307927600677265, 0.218154962499145, 0.249630808322935, 0.276741747762545, 
  0.0959323496890737, 0.144213110146746, 0.0929990840802643, 0.190088309954592, 
  0.159029556704208, 0.204186267910012, 0.26199124557682, 0.171309738332821, 
  0.125707503945437, 0.241559205433323, 0.170811734710593, 0.275876128675216, 
  0.205483749159249)), .Names = c("cntry", "region_name", "prop"), class = c("tbl_df", 
  "tbl", "data.frame"), row.names = c(NA, -37L)))

现在我要做的是将来自prop变量mydata的结果显示到一个choropleth地图上,使用如下所示:

代码语言:javascript
复制
leaflet() %>%
  addPolygons()

我的绊脚石是,如何让R将prop变量中的结果与SPDF文件中的相应区域匹配以运行choropleth映射?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-06 03:38:39

我把Germany_mapFrance_map组合在一起,这样我就可以同时画多边形了。然后,我为prop创建了颜色。使用addPolygons()时,可以指定fillColor = ~mypal(mydata$prop)。道具值不必停留在多边形数据中。同样,您可以在values = mydata$prop中指定addLegend()。您可以看到下面的结果是屏幕截图。

代码语言:javascript
复制
library(sp)
library(raster)
library(maptools)
library(leaflet)

# Combine German and French polygons
mymap <- rbind(Germany_map, France_map, makeUniqueIDs = TRUE)

### Create colors for prop
mypal <- colorNumeric(palette = "Reds", domain = mydata$prop)


leaflet() %>% 
addProviderTiles("OpenStreetMap.Mapnik") %>%
setView(lat = 49.2402, lng = 6.9969, zoom = 6) %>%
addPolygons(data = mymap,
            stroke = FALSE, smoothFactor = 0.2, fillOpacity = 0.5,
            fillColor = ~mypal(mydata$prop),
            popup = paste("Region: ", mymap$NAME_1, "<br>",
                          "Prop: ", mydata$prop, "<br>")) %>%
addLegend(position = "bottomright", pal = mypal, values = mydata$prop,
          title = "Prop",
          opacity = 0.5)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48123535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档