在igraph中为社区指定颜色

时间:2014-07-06 12:16:16

标签: r igraph sna

我在igraph中使用fastgreedy.community检测算法在R中生成社区。代码返回12个社区,但是在绘图时很难识别,因为它返回的颜色数量有限。如何使用两种不同的颜色绘制此图形?

l2 <- layout.fruchterman.reingold(largest.component)
ebc.g05 <- fastgreedy.community(largest.component)
plot(largest.component, layout=l2, vertex.color=membership(ebc.g05),
 vertex.size=2, vertex.label=NA)

值得注意的是,没有子图未连接到此图,因为这是较大图的最大连通分量。节点之间的联系非常混乱,并且难以用很少的颜色来解释情节。

1 个答案:

答案 0 :(得分:9)

要获得八种以上的颜色,您需要创建自己的调色板,并使用membership(fc)作为该调色板的索引。

library(igraph)

# create a sample graph - ## you should have provided this!!! ##
g <- graph.full(5)
for (i in 0:11) {
  g <- g %du% graph.full(5)
  g <- add.edges(g,c(5*i+1,5*(i+1)+1))
}

fc <- fastgreedy.community(g)

colors <- rainbow(max(membership(fc)))
plot(g,vertex.color=colors[membership(fc)], 
     layout=layout.fruchterman.reingold)

我使用了内置的彩虹调色板,但还有许多其他方法可以创建调色板。事实是,超过8-10种颜色,你会得到一些非常接近的颜色。

请注意,在SO上强迫别人为您创建示例被认为是粗鲁的。提供数据集,或创建代表性示例并提供该数据集。