繁体   English   中英

在R中使用igraph进行网络绘图-区分顶点和边

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM