我在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)
值得注意的是,没有子图未连接到此图,因为这是较大图的最大连通分量。节点之间的联系非常混乱,并且难以用很少的颜色来解释情节。
答案 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上强迫别人为您创建示例被认为是粗鲁的。提供数据集,或创建代表性示例并提供该数据集。