[英]Network plotting with igraph in R - differntiating vertices and edges
我正在努力使用igraph与R进行一些社交网络映射。 我想制作一个图,显示当地代表(例如比尔)与所在地区的个人和行政机构之间的关系。 我已经能够使用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
我想按颜色区分顶点是否是Bill的同伴之一。 我试过了
V(g)$color <- ifelse(V(g)
但收到错误消息或没有任何变化。 我还想通过权重来区分不同颜色的边缘,以使用权重变量在Bill的直接或间接接触之间进行表示。
我们将对任何有关如何增强Bill的图或是否应使用其他数据框的指导提供任何帮助。
您的“关联”代码不起作用的原因是,当您执行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)
产生
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.