R中的igraph网络绘图 - 不同的顶点和边缘

时间:2014-06-26 18:29:05

标签: r igraph

我正在努力与R使用igraph进行一些社交网络映射。我想制作一个情节,显示当地代表(例如比尔)与其所在地区的个人和行政机构之间的关系。我已经能够使用graph.data.frame中的以下内容为Bill和他的边缘联系人绘制顶点:

who contact     weight  associate
Bill    district    1   y
Bill    region      2   n
Bill    village A   1   y
Bill    village B   2   n
Bill    social worker   1   n
Bill    steve       1   y
Bill    church      2   n
Bill    jane        1   y
Bill    village A Admin 1   n
Bill    village B Admin 1   n

我想用颜色区分顶点,看它们是否是比尔的同伙之一。我试过了

V(g)$color <- ifelse(V(g) 

但是收到错误消息或没有任何更改。我还想按权重区分不同颜色的边缘,以使用权重变量来表示Bill的直接或间接联系。

关于如何增强Bill的情节或是否应该使用不同的数据帧的任何指导将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的“关联”代码无法正常工作的原因是当您执行graph.data.frame时,额外属性会与您提供的边缘一起存储,而不是顶点。以下是如何添加顶点信息(并使用@ jlhoward的建议绘制权重)

#sample data    
dd <- structure(list(who = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), .Label = "Bill", class = "factor"), contact = c("district", 
"region", "villageA", "villageB", "socialworker", "steve", "church", 
"jane", "villageAAdmin", "villageBAdmin"), weight = c(1L, 2L, 
1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L), associate = c("y", "n", "y", 
"n", "n", "y", "n", "y", "n", "n")), .Names = c("who", "contact", 
"weight", "associate"), row.names = c(NA, -10L), class = "data.frame")

现在是代码

library(igraph)
gg <- graph.data.frame(dd[,1:3])

V(gg)[dd$contact]$associate <- dd$associate
V(gg)$color <- ifelse(V(gg)$associate=="y", "green","orange")

plot(gg,edge.color=E(gg)$weight)

产生

output

相关问题