igraph关系图


导入关系测试数据,如下,这个不是用户和用户之间的关心,而是用户和环境信息的关系,基于用户和设备之间的关系,不同的设备用不同的颜色标出来



###从csv文件中读取关系数据
df<-read.csv('rela_test.csv',head=T,fileEncoding='UTF-8',encoding='UTF-8',sep=';')

###从关系数据中整理出来顶点的数据,
vertex<-c(as.vector(df$user),as.vector(df$value))

##给用户的顶点统一表上黑色
co<-c(rep('black',length(df$user)),as.vector(df$type))

##根据设备类型进行着色
i<-1
while (i<=length(co)){ if(co[i]=='mac') co[i]='red' else if(co[i]=='ip') co[i]='green' else co[i]='black' ;i<-i+1 }

##生成顶点数据框
vertex<-unique(data.frame(vertex=vertex,co=co))

###组合成igraph的有向数据框
g<-graph.data.frame(df,directed = F,vertices = vertex)

##画图
plot.igraph(g,
            vertex.size=5,
            layout=layout.fruchterman.reingold,
            vertex.shape='circle',
            vertex.label.cex=1.5,
            vertex.label.color='black',
            edge.arrow.size=0,
            vertex.label.family='STKaiti',
            vertex.color=V(g)$co
)


效果


你可能感兴趣的:(R)