首页 > 解决方案 > 在 R igraph 中绘制社区对象时更改顶点颜色

问题描述

我想在图上运行社区检测算法g以获取社区对象cd,然后用于plot(cd,g)制作社区包含在半透明 blob 中的图。但是,我也想给顶点着色,看起来好像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)

情节(g)

plot(cd,g)

情节(cd,g)

我想保留半透明的斑点,但强制我自己着色。原因是我想将社区成员(blob)与另一个分类(顶点颜色)进行比较。

当我更改顶点标签时,我没有遇到同样的问题。另外我应该注意到这不起作用:

plot(cd,g,vertex.color=vcolor)

标签: rigraph

解决方案


我很欣赏这是一个老问题,但我也一直在努力解决这个问题,并认为我找到了一个简单的答案,以防万一它有帮助。以你为例:

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)

推荐阅读