gpt4 book ai didi

R - 绘制六边形镶嵌

转载 作者:行者123 更新时间:2023-12-01 04:13:50 25 4
gpt4 key购买 nike

我想生成一些方形图,其中包含六边形数组,例如绘制 here .我想绘制常规(几何规则)和异常六边形镶嵌,所以我认为“sp”包中的工具不起作用。

下面是我使用 owin 和 plot 进行正六边形镶嵌的尝试。

library(maptools)
library(spatstat)

twid <- 20
theight <- 20
sideL <- 2
rp1 <- (sideL/2)*sqrt(3)
rp2 <- 2*(sideL/2)*sqrt(3)
rp3 <- 3*sideL

bx <- c(1:floor(twid/rp3))
by <- c(1:floor(theight/rp3))
hex_array1 <- list(bx)
hex_array2 <- list(by)

for(i in 1:ceiling(twid/rp3)){
bx[i] <- list(x=c(0+rp3*i,1+rp3*i,3+rp3*i,4+rp3*i,3+rp3*i,1+rp3*i))
by[i] <- list(y=c(rp1,rp2,rp2,rp1,0,0))
hex_array1[i] <- bx[i]
hex_array2[i] <- by[i]
}

har1 <- list(x=c(0,1,3,4,3,1), y=c(rp1,rp2,rp2,rp1,0,0))

har2 <- list(x=hex_array1,y=hex_array2)


hexig <- owin(poly=list(list(x=c(0,twid,twid,0), y=c(0,0,theight,theight)),
har1, har2
)
)
plot(hexig)

但是,上面的内容似乎出错了,因为 har2 没有正确格式化为列表列表。

以上显然仅适用于单行六边形,但我想一旦我得到第一行,我只需将单行包装在 for 循环中,为每行添加一组 x 和 y 距离。我只是不知道如何格式化 har2 以便我可以将它直接插入 owin 的 poly 函数中。

我愿意完全改变我完成上述工作的方式,我对 R 还是比较陌生,所以我绝对仍然不知道如何以最有效/最优雅的方式做事。我目前在运行 RStudio V0.99.903 的 Win 10 x64 上运行 R 版本 3.3.2

任何帮助表示赞赏。

谢谢!

最佳答案

我想 spatstat拥有您正在寻找的功能:hextessaffine.tess .

查看 affine.tess 的示例.这里
是您可以做什么的示例(添加 trim = FALSE 以避免
边界框):

library(spatstat)
H <- hextess(square(5), 0.2)
plot(H)


shear <- matrix(c(1,0,0.6,1), 2, 2)
sH <- affine(H, shear)
plot(sH)

关于R - 绘制六边形镶嵌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40479111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com