首页 > 解决方案 > 从ggvoronoi中提取多边形区域

问题描述

我想从 ggvoronoi 中提取每个观察值的区域,以便我得到一个新的数据框,第一列是观察值,下一列是多边形的区域。

library(ggvoronoi)
set.seed(45056)
x <- sample(1:200,100)
y <- sample(1:200,100)

ggplot(points,aes(x,y)) +
stat_voronoi(geom=“path”) +
geom_point()

标签: rggplot2

解决方案


首先将您的数据转换为 sf 对象:

library(sf) 
set.seed(45056)
x <- sample(1:200,100)
y <- sample(1:200,100)
points <- data.frame(x = x, y = y)   
points_sf <- st_as_sf(points, coords = c("x", "y"))

然后您可以使用以下函数来计算每个多边形的面积:

v <- points_sf %>% 
  st_union() %>%
  st_voronoi() %>%
  st_collection_extract() %>%
  st_area()

结合原始数据:

cbind(x, y, v)

推荐阅读