2011-04-19 5 views
4

Je travaille avec des graphes dans R. J'utilise actuellement igraph et j'aimerais pouvoir tracer des arêtes bidirectionnelles "arêtes réciproques" d'un graphe. Jusqu'à présent, j'ai vu qu'il est possible de tracer des graphes "bidirectionnels" mais pas des bords réciproques, par exemple: E (1,3) et E (3,1) pourraient potentiellement être représentés comme un bord bidirectionnel < ->, mais à la place je voudrais tracer deux bords parallèles l'un pointant dans la direction opposée de l'autre || . Il existe dans Rgraphviz une option lors du traçage "plot (rEG, recipEdges =" distinct ")" qui fait cela, mais j'aime plus l'aspect des graphes sur igraph. Merci d'avance.R bords réciproques dans igraph dans R

Répondre

4

Dans igraph, vous pouvez utiliser l'attribut de bord curved pour courber les bords souhaités.

Par exemple, voici une matrice petite contiguïté à base graphique:

library("igraph") 
adj <- matrix(c(
    0,1,1, 
    1,0,1, 
    0,0,0),3,3,byrow=TRUE) 

library("igraph") 
G <- graph.adjacency(adj) 

Le bord entre le noeud 0 et 1 est bidirected (En fait, ce n'est pas, il y a deux bords et ils regardent comme un bord bidirected parce qu'ils sont droites) .:

plot(G) 

Pour modifier cela, nous pouvons utiliser le edgelist:

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) 

Une autre option est mon paquet, lorsque cela est le comportement par défaut:

library("qgraph") 
qgraph(adj) 

qui peut être supprimé avec l'argument bidirectional.

+0

Merci beaucoup, je vois que vous pouvez même mettre en place la séparation entre les bords parallèles, c'est génial. – megyn

2

Essayez plot(graph, edge.curved=TRUE). Cela fonctionne certainement dans igraph 0.6, et il peut aussi fonctionner dans igraph 0.5.4 (pas sûr quand il a été ajouté).

+0

C'est génial, ce que j'ai aimé de la réponse de @sachaepskamp, ​​c'est que vous êtes capable de modifier la séparation entre les bords, grâce aux deux. – megyn

Questions connexes