R语言igraph作社团挖掘结果图

利用R语言的igraph作社团挖掘的图

输入:网络拓扑文件(边);社区划分结果文件(顶点  社区号)

输出:社区划分的结果图

代码:

######测试代码######
if(T){
  library(igraph)
  library(grDevices)
  rm(list=ls())
  network=read.csv("./dataset/data/karate.txt",sep=" ",header=F)
  community=read.csv("./result/lporigin_karate/2.1_of_1",sep="\t",header=F)
  label=community[,2]#获取按顶点ID排序后的各顶点的标号
  #将label中各顶点的社区号映射为颜色
  ramp =colorRamp(c("red", "white","blue"));
  ramp(seq(0, 1, length = length(unique(label))))
  panel=rgb( ramp(seq(0, 1, length = length(unique(label)))), max = 255)#设定颜色,颜色数目等于社区数目
  g = graph.data.frame(network,directed=F,vertices=community[,1])
  map=rep(0,length(label))#产生一个全零向量
  color=rep("",length(label))#存放每个顶点的颜色
  index=1
  for(i in unique(label)){
    map[i]=index
    index=index+1
  }
  for(i in 1:length(label)){#将每个社区的顶点颜色设置为同一颜色
    color[i]=panel[map[label[i]]]
  }
  V(g)$color=color#设置顶点颜色
  plot(g,vertex.label.dist=1,vertex.label.font=3,vertex.label.cex=1.5,vertex.label.color=1)
}



./dataset/data/karate.txt文件内容:每行表示网络中一条边格式:顶点标号 顶点标号

2 1
3 1
3 2
4 1
4 2
4 3
5 1
6 1
7 1
7 5
7 6
8 1
8 2
8 3
8 4
9 1
9 3
10 3
11 1
11 5
11 6
12 1
13 1
13 4
14 1
14 2
14 3
14 4
17 6
17 7
18 1
18 2
20 1
20 2
22 1
22 2
26 24
26 25
28 3
28 24
28 25
29 3
30 24
30 27
31 2
31 9
32 1
32 25
32 26
32 29
33 3
33 9
33 15
33 16
33 19
33 21
33 23
33 24
33 30
33 31
33 32
34 9
34 10
34 14
34 15
34 16
34 19
34 20
34 21
34 23
34 24
34 27
34 28
34 29
34 30
34 31
34 32
34 33


./result/lporigin_karate/2.1_of_1文件内容:每行格式:顶点标号 社区号

2	2
1	2
3	2
4	2
5	17
6	17
7	17
8	2
9	34
10	2
11	17
12	2
13	2
14	2
17	17
18	2
20	2
22	2
26	34
24	34
25	34
28	34
29	34
30	34
27	34
31	34
32	34
33	34
15	34
16	34
19	34
21	34
23	34
34	34



结果图:

R语言igraph作社团挖掘结果图_第1张图片

你可能感兴趣的:(MachineLearning)