如何使用定义的颜色绘制igraph社区?

6
我可以使用下面的代码来生成和绘制社区:
 wc <- walktrap.community(subgraph)
 modularity(wc)
 membership(wc)

 layout <-layout.fruchterman.reingold(subgraph)

 plot(wc, subgraph,  layout=layout, vertex.label=NA, vertex.size=5, edge.arrow.size=.2)

然而,社区的颜色是自动的,我有两个问题:

  1. 我能够自定义社区的颜色吗?
  2. 我能在社区区域添加一些文本吗?
1个回答

16

是的,你可以做这两件事情。使用plot.igraph中的参数根据节点所在的模块改变节点的颜色(以及改变模块周围多边形的颜色)非常简单。向模块添加文本并不那么容易,据我所知最简单的解决方案是手动将文本添加到图中。

library(igraph)

# Generate random graph and community structure
set.seed(23)
g <- sample_gnm(15, 45)
wc <- walktrap.community(g)

# Plot
par(mfrow=c(1,2), mar=rep(1,4))
layout <-layout.fruchterman.reingold(g)
plot(wc, g, layout=layout, vertex.label=NA, vertex.size=5,  edge.arrow.size=.2)

# Change colors of nodes, polygons, and polygon borders
new_cols <- c("white", "red", "black")[membership(wc)]
plot(wc, g, col=new_cols, mark.border="black", mark.col=c("tan", "pink", "lightgray"), 
    layout=layout, vertex.label=NA, vertex.size=5, edge.arrow.size=.2)

# Add labels
text(c(-1.15, 0.8, 0.9), c(0.35, -0.7, 0.8), c("A", "B", "C"))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接