R提取不同空间多边形属性的栅格和直方图
R extract raster and histogram for different spatialpolygon attributes
我想根据多边形属性的不同组合创建多边形栅格值的直方图。以下可重现数据:
library(raster)
library(sp)
poly <- raster(nrow=10, ncol=10)
poly[] <- runif(ncell(poly)) * 10
poly <- rasterToPolygons(poly, fun=function(x){x > 9})
r <- raster(nrow=100, ncol=100)
r[] <- runif(ncell(r))
poly@data$place<-sample(letters[1:3], length(poly), TRUE)
poly@data$rank<-sample.int(3, length(poly), replace = TRUE)
plot(r)
plot(poly, add=TRUE, lwd=4)
v <- raster::extract(r, poly, df=TRUE)
我可以用 ggplot
绘制 v
中所有 ID(即多边形)的直方图
ggplot(v, aes(layer)) + geom_histogram(aes(y = stat(count / sum(count))), binwidth = 0.25)
但是,我想根据 rank
属性(即 1、2、3)创建一组三个直方图,并根据 place
创建另一组三个直方图属性(即 a、b、c)。也许在 ggplot 中使用 facet
,但我不确定如何将 v
中的 ID link 转换为 poly
中的属性。
你的例子:
library(raster)
#Loading required package: sp
pr <- raster(nrow=10, ncol=10)
set.seed(1)
values(pr) <- runif(ncell(pr)) * 10
poly <- rasterToPolygons(pr, fun=function(x){x > 9})
poly$place <- sample(letters[1:3], length(poly), TRUE)
poly$rank <- sample.int(3, length(poly), replace = TRUE)
r <- raster(nrow=100, ncol=100)
values(r) <- runif(ncell(r))
v <- raster::extract(r, poly, df=TRUE)
为多边形分配显式 ID,仅保留感兴趣的变量,并从 SpatialPolygonsDataFrame 中提取 data.frame。
poly$ID <- 1:length(poly)
poly$layer <- NULL
d <- data.frame(poly)
合并
vd <- merge(d, v, by="ID")
Select一个子集并做一个直方图
x <- vd[vd$place == "a",]
hist(x$layer)
我想根据多边形属性的不同组合创建多边形栅格值的直方图。以下可重现数据:
library(raster)
library(sp)
poly <- raster(nrow=10, ncol=10)
poly[] <- runif(ncell(poly)) * 10
poly <- rasterToPolygons(poly, fun=function(x){x > 9})
r <- raster(nrow=100, ncol=100)
r[] <- runif(ncell(r))
poly@data$place<-sample(letters[1:3], length(poly), TRUE)
poly@data$rank<-sample.int(3, length(poly), replace = TRUE)
plot(r)
plot(poly, add=TRUE, lwd=4)
v <- raster::extract(r, poly, df=TRUE)
我可以用 ggplot
v
中所有 ID(即多边形)的直方图
ggplot(v, aes(layer)) + geom_histogram(aes(y = stat(count / sum(count))), binwidth = 0.25)
但是,我想根据 rank
属性(即 1、2、3)创建一组三个直方图,并根据 place
创建另一组三个直方图属性(即 a、b、c)。也许在 ggplot 中使用 facet
,但我不确定如何将 v
中的 ID link 转换为 poly
中的属性。
你的例子:
library(raster)
#Loading required package: sp
pr <- raster(nrow=10, ncol=10)
set.seed(1)
values(pr) <- runif(ncell(pr)) * 10
poly <- rasterToPolygons(pr, fun=function(x){x > 9})
poly$place <- sample(letters[1:3], length(poly), TRUE)
poly$rank <- sample.int(3, length(poly), replace = TRUE)
r <- raster(nrow=100, ncol=100)
values(r) <- runif(ncell(r))
v <- raster::extract(r, poly, df=TRUE)
为多边形分配显式 ID,仅保留感兴趣的变量,并从 SpatialPolygonsDataFrame 中提取 data.frame。
poly$ID <- 1:length(poly)
poly$layer <- NULL
d <- data.frame(poly)
合并
vd <- merge(d, v, by="ID")
Select一个子集并做一个直方图
x <- vd[vd$place == "a",]
hist(x$layer)