1

我在 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)

值得注意的是,没有不连接到该图的子图,因为这是较大图的最大连接组件。节点之间的联系比较纠结,少颜色的情节难以解读的原因。

4

1 回答 1

11

要获得超过八种颜色,您需要创建自己的调色板并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 上,强迫他人为您创建示例被认为是不礼貌的。要么提供你的数据集,要么创建一个有代表性的例子并提供它。

于 2014-07-06T15:57:22.647 回答