我教自己如何在R中使用映射工具,在这种情况下,我希望根据以下mydata数据框架的结果,在各自的区域级别建立各国的副图。
请注意,我实际上是在30个国家运行这个项目。我只是为了可复制的目的而限制在这里的两个国家。另外,请注意,getData函数将从GADM.org网站下载。
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地图上,使用如下所示:
leaflet() %>%
addPolygons()我的绊脚石是,如何让R将prop变量中的结果与SPDF文件中的相应区域匹配以运行choropleth映射?
发布于 2018-01-06 03:38:39
我把Germany_map和France_map组合在一起,这样我就可以同时画多边形了。然后,我为prop创建了颜色。使用addPolygons()时,可以指定fillColor = ~mypal(mydata$prop)。道具值不必停留在多边形数据中。同样,您可以在values = mydata$prop中指定addLegend()。您可以看到下面的结果是屏幕截图。
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)

https://stackoverflow.com/questions/48123535
复制相似问题