R中空间多边形的不同层次着色
我的主要目标是将几个空间多边形组合成一张地图,然后根据变量的级别为它们着色 为此,我首先清理并汇总GADM数据:R中空间多边形的不同层次着色,r,spatial,sp,R,Spatial,Sp,我的主要目标是将几个空间多边形组合成一张地图,然后根据变量的级别为它们着色 为此,我首先清理并汇总GADM数据: france <- getData("GADM", country = "FRA", level = 5) 关键是,我们希望控制颜色和颜色级别—取决于值 谢谢你的帮助 你的方式,简化 当直接在spatialpolygon对象上使用时,可以简化选择区域的方式。 例如: Normandie_names <- c("Basse-Normandie", "Haute-N
france <- getData("GADM", country = "FRA", level = 5)
关键是,我们希望控制颜色和颜色级别—取决于值
谢谢你的帮助 你的方式,简化
当直接在spatialpolygon对象上使用时,可以简化选择区域的方式。
例如:
Normandie_names <- c("Basse-Normandie", "Haute-Normandie")
Normandie <- france[which(france$NAME_1 %in% Normandie_names),]
使用SpatialPolygonsDataFrame
,可以将外部数据添加到多边形中。
您可以使用类似于heat.colors
的调色板根据您的值为多边形着色。
因此,完整的脚本如下所示:
library(sp)
library(rgdal)
library(raster)
library(rgeos)
library(dplyr)
library(ggplot2)
# Load data
france <- getData("GADM", country = "FRA", level = 5)
# Select features ---------------
# Select Normandie
Normandie_names <- c("Basse-Normandie", "Haute-Normandie")
Normandie <- france[which(france$NAME_1 %in% Normandie_names),]
Normandie.sp.tmp <- gUnaryUnion(Normandie)
# Add external data to Normandie
Normandie.sp <- SpatialPolygonsDataFrame(
Normandie.sp.tmp,
data = data.frame(region = "Normandie", value = 30))
# Select Bourgogne
Bourgogne_Franche_Comte_names <- c("Bourgogne", "Franche-Comté")
Bourgogne <- france[which(france$NAME_1 %in% Bourgogne_Franche_Comte_names),]
Bourgogne.sp.tmp <- gUnaryUnion(Bourgogne)
# Add external data to Bourgogne
Bourgogne.sp <- SpatialPolygonsDataFrame(
Bourgogne.sp.tmp,
data = data.frame(region = "Bourgogne_Franche_Comte", value = 100))
# Merge both polygons with their data
Regions.sp <- rbind(Normandie.sp, Bourgogne.sp)
plot(Regions.sp, col = rev(heat.colors(50))[Regions.sp$value/2])
请提供一个可复制的示例。我知道GADM是一个广泛使用的数据集,但是如果您可以通过提供一些现成的代码来获取与您使用的数据相同的数据,或者使用从头创建的形状文件创建一个玩具示例来说明问题,从而使我们更容易地为您提供帮助,那将是非常棒的。
joined <- union(Normandie, Bourgogne_Franche_Comte)
plot(joined, col = joined$Value)
Normandie_names <- c("Basse-Normandie", "Haute-Normandie")
Normandie <- france[which(france$NAME_1 %in% Normandie_names),]
joined <- rbind(Normandie, Bourgogne_Franche_Comte)
library(sp)
library(rgdal)
library(raster)
library(rgeos)
library(dplyr)
library(ggplot2)
# Load data
france <- getData("GADM", country = "FRA", level = 5)
# Select features ---------------
# Select Normandie
Normandie_names <- c("Basse-Normandie", "Haute-Normandie")
Normandie <- france[which(france$NAME_1 %in% Normandie_names),]
Normandie.sp.tmp <- gUnaryUnion(Normandie)
# Add external data to Normandie
Normandie.sp <- SpatialPolygonsDataFrame(
Normandie.sp.tmp,
data = data.frame(region = "Normandie", value = 30))
# Select Bourgogne
Bourgogne_Franche_Comte_names <- c("Bourgogne", "Franche-Comté")
Bourgogne <- france[which(france$NAME_1 %in% Bourgogne_Franche_Comte_names),]
Bourgogne.sp.tmp <- gUnaryUnion(Bourgogne)
# Add external data to Bourgogne
Bourgogne.sp <- SpatialPolygonsDataFrame(
Bourgogne.sp.tmp,
data = data.frame(region = "Bourgogne_Franche_Comte", value = 100))
# Merge both polygons with their data
Regions.sp <- rbind(Normandie.sp, Bourgogne.sp)
plot(Regions.sp, col = rev(heat.colors(50))[Regions.sp$value/2])
# Create vector to define which regions will be united
Union.vector <- rep(0, length(france))
Union.vector[which(france$NAME_1 %in% Normandie_names)] <- 1
Union.vector[which(france$NAME_1 %in% Bourgogne_Franche_Comte_names)] <- 2
# Unite regions
Region.union.sp <- gUnaryUnion(france, id = Union.vector)
# Add external dataset
Region.union.sp.data <- SpatialPolygonsDataFrame(
Region.union.sp,
data = data.frame(
value = c(0, 30, 100),
region = c("all", "Normandie", "Bourgogne_Franche_Comte")),
match.ID = FALSE)
plot(Region.union.sp.data,
col = rev(heat.colors(51))[1 + Region.union.sp.data$value/2])