2016-07-12 6 views
3

中程度に応じて頂点をソートする:はどのようIGRAPHのlayout_in_circle

dt1 <- data.frame(v1=sample(letters[1:10],20,replace=TRUE), 
        v2=sample(letters[1:10],20,replace=TRUE)) 
g<-graph.data.frame(dt1, directed=F) 
plot(g,layout=layout_in_circle) 

enter image description here

私は度が減少して順序で頂点をプロットしたいです。どうやってやるの? 私はdegree(g)を使用して学位情報を取得しています。しかしながら、プロットされたノードの順序は、gオブジェクトの内側の順序、すなわちインデックス番号に従う。 V(g)$name <-を使用してノードの名前を割り当てると、名前は変更されましたが、名前関係にIDが変更されました。

+0

igraphオブジェクトの頂点の度数を数えます。ノードまたはエッジリストとして必要な属性を作成します(マニュアルに記載する必要があります)。ノードがエッジリストに何回出現するかを数える方法に近づく。それが助けてくれますか? – Rockbar

+0

こんにちは@Rockbar、私は_degree(g)_を使用して度情報を取得しようとしました。しかし、どのようにして頂点IDのインデックスを並べ替えることができますか? – pengchy

+0

正しく覚えていれば、 "as.edge.list"機能があります。そのアプローチから私は考えている計算アルゴリズム – Rockbar

答えて

7

layout_in_circleのドキュメントを読んでください(つまり、タイプRはhelp(layout_in_circle)です)。

ため:頂点がその 所望の配置のために、円周上に配置するには、関数がorderを名前付き引数を持っていることを言います。ここに含まれていない頂点は ので、すべてを行う必要がRでorder()機能を使用して、頂点の度に基づいて順位ベクトルを作成することです(0,0)

に配置され、その後、それをorder引数に渡してレイアウトを作成します。

> layout <- layout_in_circle(g, order=order(degree(g))) 
> plot(g, layout=layout) 
関連する問題