2016-10-05 6 views
1

私はvisNetworkというパッケージを使い始めていますが、将来はユーザーインターフェイスの使用に大きな可能性があるようです。IGraphのVisNetwork - クラスタの色を頂点に実装できません

私は問題を抱えていることはほとんどありません。私はigraphを作成しており、具体的にはfastgreedyアルゴリズムにクラスタリングアルゴリズムを適用しています。

サンプルコードが提供:

B = matrix( 
c(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 47, 3, 0, 3, 0, 1, 10, 13, 5, 
0, 3, 19, 0, 1, 0, 1, 7, 3, 1, 
0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 
0, 3, 1, 0, 32, 0, 0, 3, 2, 1, 
0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 
0, 1, 1, 0, 0, 0, 2, 1, 1, 0, 
0, 10, 7, 0, 3, 0, 1, 90, 12, 4, 
0, 13, 3, 0, 2, 0, 1, 12, 52, 4, 
0, 5, 1, 0, 1, 0, 0, 4, 4, 18), 
nrow=10, 
ncol=10) 
colnames(B) <- c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J") 
rownames(B) <- c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J") 

g96e = t(B) %*% B 

i96e = graph.adjacency(g96e, mode = "undirected", weighted = TRUE, diag=FALSE) 

をそれから私はこれにクラスタリングアルゴリズムを適用:それは一致するように

V(i96e)$label = V(i96e)$name 
V(i96e)$label.color = rgb(0,0,.2,.8) 
V(i96e)$label.cex = .1 
V(i96e)$size = 2 
V(i96e)$color = rgb(0,0,1,.5) 
V(i96e)$frame.color = V(i96e)$color 
fc<-fastgreedy.community(i96e, merges=TRUE, modularity=TRUE, 
       membership=TRUE, weights=E(i96e)$weight) 
colors <- rainbow(max(membership(fc))) 

は今visNetworkパッケージを使用して、私は、ノードの色を変更したいですクラスタリングアルゴリズムの色。私の問題は、ノードの色を変更する方法がわかりません。

visNetwork例:

library(visNetwork) 
visIgraph(i96e, idToLabel = TRUE, layout = "layout_nicely")%>% 
visNodes(size = 10) %>% 
visOptions(highlightNearest = TRUE, 
     nodesIdSelection = TRUE)  

enter image description here

私は、ノードの色は、クラスターと同じで持っていると思います。

ご協力いただきありがとうございます!

答えて

1

ここに解決策があります。ただ、IGRAPHと平野グラフを構築し、visNetworkを使用して化粧品のように変更します。

コード:

i96e = graph.adjacency(g96e, mode = "undirected", weighted = TRUE, diag=FALSE) 
fc<-fastgreedy.community(i96e, merges=TRUE, modularity=TRUE, 
        membership=TRUE, weights=E(i96e)$weight) 
library (visNetwork) 
dummy <- toVisNetworkData(i96e) 
my.edges <- dummy$edges 
my.nodes <- dummy$nodes 
my.nodes$groups <- fc$membership 
my.nodes$color.background <- c("red", "blue", "green" ,"yellow")[my.nodes$groups] 
my.nodes$color.border <- c("red", "blue", "green" ,"yellow")[my.nodes$groups] 
my.nodes$size = 5 
my.edges$color <- "black" 
visNetwork(my.nodes, my.edges)%>% 
visIgraphLayout() 
関連する問題