Je voudrais générer des parcelles carrées qui ont des réseaux d'hexagones à l'intérieur d'entre eux, comme dessiné here. Je voudrais tracer à la fois des pavages hexagonaux réguliers (géométriquement réguliers) et anormaux, donc je ne pense pas que les outils du paquetage "sp" fonctionneront.R - Traçage Hexagone Tessellations
Ci-dessous est ma tentative de tesselation hexagone régulier à l'aide owin et l'intrigue.
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)
Cependant, ce qui précède semble à l'erreur parce Har2 n'est pas formaté comme une liste de listes correctement. Ce qui précède est évidemment seulement pour une seule rangée d'hexagones, mais je me suis dit une fois que j'ai obtenu la première rangée, je voudrais juste envelopper la seule rangée dans une boucle for qui a ajouté un ensemble x et y distances pour chaque rangée. Je n'arrive pas à comprendre comment formater le har2 pour pouvoir le brancher directement sur la fonction poly d'owin.
Je suis ouvert à changer complètement la façon dont je l'ai fait ce qui précède, je suis encore relativement nouveau pour R, donc je vraiment ne sais toujours pas comment faire les choses de la façon la plus efficace/élégant. Je suis actuellement en cours d'exécution version R 3.3.2 sur Windows 10 x64 en cours d'exécution rstudio V0.99.903
Toute aide est appréciée.
Merci!
Par rapport à mon hack ggplot, cela crée directement le motif de tesselation désiré et est beaucoup plus flexible en termes de transformations. Espérons que le PO reviendra et choisira ceci comme la meilleure réponse. Aussi, il serait utile si vous vous êtes débarrassé de tous les # #> et # # affn.t> 'et juste fourni le code nu afin que les gens puissent copier et coller sans avoir à éditer les caractères du curseur. – eipi10
Merci pour les commentaires positifs @ eipi10.J'ai mis à jour ma réponse pour la rendre plus facile à copier et à coller. –