我正在尝试创建一个与9/11攻击所涉及的人员之间的关系的图表,但是我不太了解所输入的内容。我使用循环对劫机者进行分组(hijacker1知道hijacker2; hijacker5知道hijacker3等),但这对我不起作用。
我的工作结果应该是以下页面上的关系图:LINK
我使用的是 csv格式的数据:Data to download
数据架构如下图所示。共有三个文件,但是如果我正确理解要获取的文件,那么第一个文件(?)中的数据就足够了
Hijackers ASSOCIATES
Hijackers ATTR
Hijackers PRIORITY_CONTACT
Hname1 HName2 HName3
HName1 0 1 0
HName2 1 0 1
HName3 0 1 0
...
我想绘制一个关系图并提取有关哪个劫机者关系最多的信息(我应该使用betweenness()
库中的igraph
吗?)。
答案 0 :(得分:1)
这里是igraph
的一种方法:
首先,让我们获取数据并将其放入邻接矩阵:
temp <- tempfile(fileext = ".zip")
download.file("https://sites.google.com/site/ucinetsoftware/datasets/covert-networks/911hijackers/9%2011%20Hijackers%20CSV.zip?attredirects=0&d=1",
temp,
mode = "wb")
data <- read.csv(unz(temp,"CSV/9_11_HIJACKERS_ASSOCIATES.csv"))
my.rownames <- data$X
data2 <- sapply(data[,-1], as.numeric)
rownames(data2) <- my.rownames
Adj <- as.matrix(data2)
现在简单的部分。我们可以将邻接矩阵转换为igraph图,计算顶点度并将该数据添加到图中。
library(igraph)
Graph <- graph_from_adjacency_matrix(Adj)
V(Graph)$vertex_degree <- degree(Graph)
最后,我们可以绘制出顶点大小与度成比例的图形:
plot.igraph(Graph,
vertex.size = V(Graph)$vertex_degree,
layout=layout.fruchterman.reingold, main="Hijacker Relationships")