首页 > 解决方案 > 如何根据集群网络中的特定值对顶点着色?

问题描述

获取以下网络的代码如下所示

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,sep=",",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)
)

效果很好。

网络1a


但是,一旦我进行了集群网络分析并且我想显示组,节点/顶点的颜色就没有正确显示。


# 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
     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)
)

网络1

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

标签: rcolorsvertices

解决方案


然后调用顶点颜色的选项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)
)

在此处输入图像描述


推荐阅读