在R igraph中绘制社区对象时更改顶点颜色

3
我希望在一个图形`g`上运行社区检测算法,以获取社区对象`cd`,然后使用`plot(cd,g)`创建一个包含半透明斑点的图形,其中包含社区。但是,我还想将顶点着色,似乎`plot`会覆盖我赋给`V(g)$names`的顶点颜色。
以下是示例以说明我的意思:
v1 <- c(1,1,2,3,4,4,6,7,8,9)
v2 <- c(2,3,3,4,5,6,5,8,9,7)

graph <- data.frame(v1,v2)
g <- graph.data.frame(graph, directed=FALSE)

cd <- fastgreedy.community(g)

vcolor <- c("white", "white", "white",
             "blue", "blue", "blue",
             "red", "red", "red")

vertex_attr(g)$color <- vcolor

plot(g)
plot(cd,g)

当你执行plot(g)时,顶点的颜色是红、白和蓝色的。然而,当你执行plot(cd,g)时,它们的颜色分别是蓝、绿和橙。
执行plot(g)的结果如下: plot(g) 执行plot(cd,g)的结果如下: plot(cd,g) 我想保留半透明的色块,但是我想强制自己的着色方式。原因是我想比较社区成员(色块)与另一种分类(顶点颜色)。
当我更改顶点标签时,没有遇到同样的问题。同时,我应该指出,这种方法不起作用:
plot(cd,g,vertex.color=vcolor)
1个回答

3

我知道这是一个老问题,但我也一直在苦苦挣扎,现在我想我已经找到了一个简单的答案,希望能对你有所帮助。使用你的示例:

v1 <- c(1,1,2,3,4,4,6,7,8,9)
v2 <- c(2,3,3,4,5,6,5,8,9,7)

graph <- data.frame(v1,v2)
g <- graph.data.frame(graph, directed=FALSE)

cd <- fastgreedy.community(g)

vcolor <- c("white", "white", "white",
            "blue", "blue", "blue",
            "red", "red", "red")

plot(cd,g,
     col = vcolor)

哇!谢谢你! - undefined

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