利用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) }
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
结果图:
原文地址:http://blog.csdn.net/liuxuejiang158blog/article/details/42738787