我在R中创建了一个voronoi图 给出了点标签
使用代码:
install.packages("deldir")
library(deldir)
x <- runif(20); y <- runif(20); window <- c(0,1,0,1)
tess <- deldir(x, y, rw = window)
plot.deldir(tess, wpoints="real", wlines="tess")
label=c('a','b','c'.....'t')
library(plotrix)
thigmophobe.labels(x, y, labels=label)
有人可以提出查询,以便 如果我给出一个新点的位置,该点位于包含点&#39; a&#39; 输出应该是&#39; a&#39;。 提前谢谢。
答案 0 :(得分:2)
由于voronoi tesselation是最近点之间的边界线,因此您的问题只会减少到找到最近的邻居。
您可以通过使用dist()
计算距离矩阵,然后以最小距离提取点来完成此操作。
试试这个:
library(deldir)
n <- 20
dat <- data.frame(
x = runif(n),
y =runif(n)
)
tess <- deldir(dat, rw = c(0,1,0,1))
plot.deldir(tess, wpoints="none", wlines="tess", col="blue")
label=letters[1:n]
text(dat, labels=label)
for (i in 1:500){
newdat <- data.frame(x=runif(1), y=runif(1))
np <- which.min(unname(as.matrix(dist(rbind(newdat, dat), diag=FALSE))[-1, 1]))
text(newdat, col="red", labels=label[np], cex=0.5)
}
答案 1 :(得分:0)
您可以使用点位置测试:http://en.wikipedia.org/wiki/Point_location。