В igraph
вы можете использовать атрибут ребра curved
для изгиба нужных ребер.
Например, вот небольшая матрица смежности на основе графа:
library("igraph")
adj <- matrix(c(
0,1,1,
1,0,1,
0,0,0),3,3,byrow=TRUE)
library("igraph")
G <- graph.adjacency(adj)
Ребро между узлом 0 и 1 является двунаправленным (на самом деле это не так, это два ребра, и они просто выглядят как двунаправленное ребро, потому что они прямые).:
plot(G)
Чтобы изменить это,мы можем использовать список краев:
E <- t(apply(get.edgelist(G),1,sort))
E(G)$curved <- 0
E(G)[duplicated(E) | duplicated(E,fromLast =TRUE)]$curved <- 0.2
plot(G)
Другой вариант - мой пакет, где используется поведение по умолчанию:
library("qgraph")
qgraph(adj)
, которое можно подавить с помощью аргумента bidirectional
.