Множественное направлены ребра igraph

Обновить

November 2018

Просмотры

1.1k раз

4

Я хотел бы выразить ребра между вершинами 1 и 2 на следующем графике в виде двух отдельных ребер со стрелками в противоположных направлениях.

require(igraph) 
e <-  c(1,2, 2,3, 3,1, 3,4 , 4,1 , 2,1)
g <- graph(e, n=5, directed = TRUE)
tkplot(g, layout=layout.circle )

То, что я получаю только один край со стрелкой на обоих концах. Он должен быть легким, но я не нашел его в любом месте и не могу понять его. Любая идея?

1 ответы

0

Вы должны построить график с закругленными краями. Обратите внимание , что в plot(), вы кривой edge.curved, но края атрибуты индивидуальны кривой край должен быть curvedтолько.

Ниже функции curve.reciprocal.edges()я написал после того, как найти этот ответ Саши Epskamp , который , по- видимому написал пакет, qgraph, который вы могли бы оказаться полезными для изучения , если ваши потребности превышают то , что может быть достигнуто следующим образом :

require(igraph)
e <-  c(1,2, 2,3, 3,1, 3,4 , 4,1 , 2,1)
g <- graph(e, n=5, directed = TRUE)

curve.reciprocal.edges <- function(g, curve=.3){
    # Return a graph where the edge-attribute $curved is reset to highlight reciprocal edges
    el <- t(apply(get.edgelist(g),1,sort))
    E(g)$curved <- 0
    E(g)[duplicated(el) | duplicated(el,fromLast =TRUE)]$curved <- curve
    (g)
}

plot(g, layout=layout.circle, edge.curved=.2)
plot(curve.reciprocal.edges(g), layout=layout.circle)