如何在单位面积上多次对Voronoi进行100点镶嵌

时间:2018-09-21 15:45:46

标签: r voronoi tessellation

简而言之,我将对100个点进行Voronoi细分,并创建1000次不同的100个点的集合,并对每个点集进行细分。

我创建了点,

x=matrix(runif(100*1000),nrow=100,ncol=1000)
y=matrix(runif(100*1000),nrow=100,ncol=1000)

使用spatstat软件包执行Voronoi镶嵌的基本代码是

dir = ppp(x=x, y=y, window = square(c(0,1)))
tess = dirichlet(dir)
plot(tess, main = "")
points(dir, pch=19, cex = 0.5)

但是,我需要对1000个样本进行Voronoi细分,并尝试创建一个循环。我想选择x和y的每一列并以1000'dir'结尾。然后对“ 1000个dir”进行细分“ tess”。我还需要使用函数area=tile.areas(tess)

计算voronoi细胞的面积

我创建的循环是

for (i in 1000) {
  dir[i] = ppp(x=x[,i], y=y[,i], window = square(c(0,1)))
}

但是我得到的只是错误和警告。你知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

您需要将输出存储在一个对象中,在这种情况下,我们将其放在一个名为setFiltersFromParams(params){ if ('pms' in params){ this.filterFormGroup.controls.pms.setValue(params.pms.split(",")); console.log("Setting the following pms:",params.pms.split(",") ) } if ('region' in params){ this.filterFormGroup.controls['region'].setValue(params.region,{emitEvent: true}); console.log("Setting the following region:",params.region ) } } 的列表中。另外,您必须指定要迭代的序列。 dirList什么也不做,必须为for (i in 100)

for (i in 1:100)

然后进行绘制,您可以使用library(deldir) library(spatstat) x <- matrix(runif(100 * 1000), nrow = 100, ncol = 1000) y <- matrix(runif(100 * 1000), nrow = 100, ncol = 1000) dirList <- list() for (i in 1:1000){ dirList[[i]] <- ppp(x = x[ , i], y = y[ , i], window = square(c(0, 1))) }

访问对象
[[]]

问题的第二部分,将对象tess = dirichlet(dirList[[1]]) plot(tess, main = "") 用于一组点:

  

贷记到 @DJack 进行常规程序

tess

enter image description here