2017-01-28 56 views
1

我已经创建了一个图形,并使用传播标签社区检测算法来检测图形中的子组。然后,我绘制了该图并使用彩虹颜色根据它们的组成员资格对顶点着色。下面是我使用的代码:如何在igraph社区集群中对边缘进行着色

g <- watts.strogatz.game(1, 100, 5, 0.05) 
clp <- cluster_label_prop(g) 
V(g)$community <- clp$membership 
rain <- rainbow(14, alpha=.5) 
V(g)$color <- rain[V(g)$community] 
plot(g, vertex.size=4, vertex.label=NA) 

我现在想的颜色,位于相同的颜色作为亚组群成员之间的边缘,为了更好的突出组内的关系。我想离开组间关系灰色。我无法解决如何做到这一点,不胜感激。

感谢

回答

1

下面应该工作:

library(igraph) 
g <- watts.strogatz.game(1, 100, 5, 0.05) 
clp <- cluster_label_prop(g) 
V(g)$community <- clp$membership 
rain <- rainbow(14, alpha=.5) 
V(g)$color <- rain[V(g)$community] 

E(g)$color <- apply(as.data.frame(get.edgelist(g)), 1, 
       function(x) ifelse(V(g)$community[x[1]] == V(g)$community[x[2]], 
            rain[V(g)$community[x[1]]], '#00000000')) 
plot(g, vertex.size=4, vertex.label=NA, edge.color=E(g)$color) 

enter image description here

+0

很不错谢谢! – JRO

+0

非常欢迎你@JRO –