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