2017-03-23 24 views
0

2つの異なるタイプのノード(その属性に基づいて)が半径の異なる2つの円に配置される特殊なグラフレイアウトを作成しようとしています(同心円のレイアウト) 。igraph(R)で同心円のレイアウトを作成する方法

ここには、10ノードのグラフに属性(サイズ)があるおもちゃの例があります。私はIGRAPHライブラリでサポートされている任意のようなレイアウトを見つけることができませんでし

g <- make_full_graph(10) 
V(g)$size = V(g) 

:目標は、外側の円上の5を超えるサイズと内側の円上の5未満のサイズ、およびノー​​ドとノードを配置することです。誰もこれを達成する方法を知っていますか?

答えて

0

円が1つだけ必要な場合は、layout_in_circleオプションがあります。あなたは、その後、あなたはそれは、エッジがきれいにしようとするために特別な何もしない

plot(g, layout=layout_in_circles(g, group=V(g)>5)) 

でプロットでき、この

layout_in_circles <- function(g, group=1) { 
    layout <- lapply(split(V(g), group), function(x) { 
     layout_in_circle(induced_subgraph(g,x)) 
    }) 
    layout <- Map(`*`, layout, seq_along(layout)) 
    x <- matrix(0, nrow=vcount(g), ncol=2) 
    split(x, group) <- layout 
    x 
} 

ようなもので、あなたのグループのそれぞれに別々それを適用することができます。しかし、ポイントは、座標の行列を返すことで、レイアウトを制御したい関数を何でも定義できるということです。

enter image description here

+0

ありがとうございます!これは私が探していたものです! – Peyman

関連する問題