Итак, многие функции макета в igraph
, layout.bipartite
включены, сосредоточены на минимизации пересечений ребер:
Макет создается путем размещения первых вершин в двух рядах в соответствии сих типы.Затем позиции в строках оптимизируются для минимизации пересечений краев:
Если вы хотите контролировать расположение узлов, вам придется создать собственный макет, создав матрицу с x и y позиции в столбцах и строках в том же порядке, что и V (g) .purrr
может помочь вам здесь:
Rs <- V(g)$name[grepl('^R', V(g)$name)] %>%
purrr::imap(function(x, i){
c(i, 2)
}) %>%
do.call(rbind, .)
Ts <- V(g)$name[grepl('^T', V(g)$name)] %>%
purrr::map2(3:6, function(x, i){
c(i, 1)
}) %>%
do.call(rbind, .)
l <- rbind(Rs, Ts)
, который даст вам матрицу:
[,1] [,2]
[1,] 1 2
[2,] 2 2
[3,] 3 2
[4,] 4 2
[5,] 5 2
[6,] 6 2
[7,] 7 2
[8,] 8 2
[9,] 3 1
[10,] 4 1
[11,] 5 1
[12,] 6 1