我想生成一些內部有六邊形陣列的方塊圖,如繪製的here。我想繪製常規(幾何規則)和異常六邊形鑲嵌,所以我不認爲「sp」包中的工具可以工作。R - 繪製六角形棋盤格
下面是我嘗試使用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還是比較陌生的,所以我絕對還是不知道如何以最有效率的方式做事。我目前在Win 10 x64上運行R版本3.3.2運行RStudio V0.99.903
任何幫助表示讚賞。
謝謝!
與我的ggplot hack相比,這直接創建了所需的tesselation模式,並且在轉換方面更加靈活。希望OP會回來並選擇這個作爲最佳答案。另外,如果你擺脫了所有'#>'和'#> affn.t>',並提供了裸代碼,這樣人們可以複製和粘貼而無需編輯光標字符,這將會很有幫助。 – eipi10
感謝您的好評@ eipi10。我已經更新了我的答案,以便更容易複製和粘貼。 –