2016-07-20 7 views
0

内側と外側の円としては、私は、そのような方法でレイアウトを変更する(画像が以下に添付)Iは、円形レイアウト形式でvisNetworkを生成するために、以下のコードを使用していますR

visNetwork(data$nodes,data$edges) %>% visIgraphLayout(layout="layout_in_circle") 

をIGRAPHを可視化内円の緑ノードと外円の青ノード。これを達成する方法を教えてください。

ありがとうございます。 Image Link

答えて

2

igraphでレイアウトを作成する方法もあります。最後にvisNetworkにフィードバックすることができます。内側のサークルをアウターに接続したいかどうかはわかりませんでした。どちらのオプションもコード化されています。

緑色のノードnodes1と青色のノードnodes2をノードマトリックスをサブセット化して作成します。

# edges within nodes1 
edges1 <- edges[edges$from%in%nodes1$id & edges$to%in%nodes1$id, ] 
# edges within nodes2 
edges2 <- edges[edges$from%in%nodes2$id & edges$to%in%nodes2$id, ] 
# edges within nodes1 or 2 = all edges if nodes1, 2 account for all nodes 
edges12 <-edges[edges$from%in%c(nodes2$id,nodes1$id) & 
    edges$to%in%c(nodes2$id,nodes1$id) , ] 

igraph1 <- graph.data.frame(edges1, directed=F, vertices=nodes1) 
igraph2 <- graph.data.frame(edges2, directed=F, vertices=nodes2) 

# inner circle doesn't connect to outer: 
igraph12a <- graph.data.frame(rbind(edges1, edges2), directed = F, 
    vertices = rbind(nodes1, nodes2)) 

# inner circle can connect to outer: 
igraph12b <- graph.data.frame(edges12, directed = F, vertices = 
    rbind(nodes1, nodes2)) 

l1 = layout.circle(igraph1) 
l2 = layout.circle(igraph2) 
l12 = rbind(l1, l2 * 0.5) # 0.5 term scales the inner circle size 

# plot both circles 
plot.igraph(igraph1, layout = l1, rescale = F) 
plot.igraph(igraph2, layout = l2*.5, add = T, rescale = F) 

# plot both circles at once 
plot.igraph(igraph12a, layout = l12, rescale = F) 

# plot both circles with possible connections between them 
plot.igraph(igraph12b, layout = l12, rescale = F) 

あなたがvisNetworkで好むなら、それを行うことができます。 layoutMatrix機能付きlayout.normが最近追加されたので、あなたがvisNetworkの更新バージョンを持っていることを確認してください:もちろん

visNetwork(nodes = rbind(nodes1, nodes2), edges = edges12) %>% 
    visIgraphLayout(layout="layout.norm", layoutMatrix = l12) 

を、あなたはこれらのすべてにノードの色を追加したいと思うでしょう。

+0

Thanks Jac。それはあなたによって提供されたコードで動作しました。 – hr02

+0

@ hr02 jacの回答があなたの質問に答えた場合は、合意は正しい解決策です。 「誰かが私の質問に答えたときに何をすべきですか?」(https://stackoverflow.com/help/someone-answers)を参照してください。 – G5W

関連する問題