4

私はRでグラフを扱っています。現在igraphを使用しています。グラフの双方向エッジ「相互エッジ」をプロットできるようにしたいと考えています。これまでのところ、「双方向」グラフをプロットすることは可能ですが、相互エッジはプロットできないことを見てきました。代わりに、一方が他方の反対方向を指す 2 つの平行なエッジをプロットしたいと思います || . これを行う "plot(rEG, recipEdges = "distinct")" をプロットするときに Rgraphviz にオプションが存在しますが、igraph でプロットがどのように見えるかがもっと好きです。前もって感謝します。

4

2 に答える 2

5

では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 の間のエッジは双方向です (実際にはそうではありません。これは 2 つのエッジであり、直線であるため双方向のエッジのように見えます)。

plot(G)

これを変更するには、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)

別のオプションは my package で、これがデフォルトの動作です:

library("qgraph")
qgraph(adj)

bidirectionalこれは引数で抑制することができます。

于 2011-04-19T16:46:37.843 に答える
2

試してみてくださいplot(graph, edge.curved=TRUE)。それは間違いなくigraph0.6で機能し、igraph 0.5.4でも機能する可能性があります(いつ追加されたかはわかりません)。

于 2011-04-19T06:41:27.423 に答える