如何在群集网络中根据特定值为顶点着色?

问题描述

此处显示了获得以下网络的代码

MyEdges <- read.table(header=TRUE,sep=",",text="
from,to
A,B
C,A
C,B
D,A
E,F
F,G
G,A
G,E
")
MyNodes <- read.table(header=TRUE,text="
name,group
A,1
B,1
C,2
D,2
E,3
F,3
G,4
")

MyNetwork <- graph.data.frame(d=MyEdges,vertices=MyNodes,directed=TRUE)

# Make a palette of colors
library(RColorBrewer)
coul  <- brewer.pal(9,"Set1") 
# Create a vector of color
my_color <- coul[as.numeric(as.factor(V(MyNetwork)$group))]

set.seed(1234)
plot(MyNetwork,layout = layout.graphopt,vertex.color = my_color,)

# Add a legend
legend("bottomleft",legend=levels(as.factor(V(MyNetwork)$group)),col = coul,bty = "n",pch= 20,pt.cex = 3,cex = 1.5,text.col=coul,horiz = FALSE,inset = c(0.1,0.1)
)

效果很好。

Network1a


但是,当我进行集群网络分析时,我想显示组 节点/顶点的颜色显示不正确。


# Plotting data
MyNetwork_cluster <- cluster_optimal(MyNetwork) #* Loading the data 
set.seed(1234)
plot(MyNetwork_cluster,#* clustered network data
     MyNetwork,# better layout options
     vertex.color = my_color,# ?????????????????????????????
)


# Add a legend
legend("bottomleft",0.1)
)

Network1

我的问题是“如何为群集网络保留顶点的颜色模型?”

解决方法

将顶点颜色的选项称为col,然后:

# Plotting data
MyNetwork_cluster <- cluster_optimal(MyNetwork) #* Loading the data 
set.seed(1234)
plot(MyNetwork_cluster,#* clustered network data
     MyNetwork,layout = layout.graphopt,# better layout options
     col = my_color,# !!!!!!!!!!!!!!!!
)


# Add a legend
legend("bottomleft",legend=levels(as.factor(V(MyNetwork)$group)),col = coul,bty = "n",pch= 20,pt.cex = 3,cex = 1.5,text.col=coul,horiz = FALSE,inset = c(0.1,0.1)
)

enter image description here