在R中操作网络数据
我有一个数据框,详细说明了N个节点之间的边权重。是否有处理此类数据的软件包 例如,我想将以下信息绘制为一个网络:在R中操作网络数据,r,networking,social-networking,R,Networking,Social Networking,我有一个数据框,详细说明了N个节点之间的边权重。是否有处理此类数据的软件包 例如,我想将以下信息绘制为一个网络: p1 p2 counts 1 a b 100 2 a c 200 3 a d 100 4 b c 80 5 b d 90 6 b e 100 7 c d 100 8 c e 40 9 d e 60 一种选择是软件包,它是用于统计社会网络分析的R软件包系列的一部分。它以稀疏的方式处理
p1 p2 counts
1 a b 100
2 a c 200
3 a d 100
4 b c 80
5 b d 90
6 b e 100
7 c d 100
8 c e 40
9 d e 60
一种选择是软件包,它是用于统计社会网络分析的R软件包系列的一部分。它以稀疏的方式处理网络数据,这对于较大的数据集很好
在下文中,我做了以下工作:
- 将edgelist(前两列)加载到网络对象中
- 将计数指定为称为权重的边属性李>
- 用gplot绘制网络。(有关更改边缘厚度的信息,请参见帮助页。)
- 绘制一个社会矩阵(仅5x5组表示邻接矩阵的块,其中(i,j)单元格由相对计数着色)
以下是如何在中绘制数据的网络图:
d我也在igraph工作。创建图形的一种方法是将所有“从”“到”节点的列表写入文本文件,并将其作为图形对象读回。图形对象可以经历许多图论过程,可以处理相当大的网络。根据我的经验,IGRAPHE是我最喜欢的大型图论工作包。它的内存效率很高,并且有一些非常好的算法。igraph使用类似于edgelist的内部数据结构。
对于更简单/更小的事情,我倾向于使用“sna”软件包(“社交网络分析”)。它非常适合交互式工作和绘制较小的网络。sna使用了更多的邻接矩阵数据结构。
答案很好!非常有帮助!
A = read.table(file="so.txt",header=T)
A
p1 p2 counts
1 a b 100
2 a c 200
3 a d 100
4 b c 80
5 b d 90
6 b e 100
7 c d 100
8 c e 40
9 d e 60
library(network)
net = network(A[,1:2])
# Get summary information about your network
net
Network attributes:
vertices = 5
directed = TRUE
hyper = FALSE
loops = FALSE
multiple = FALSE
bipartite = FALSE
total edges= 9
missing edges= 0
non-missing edges= 9
Vertex attribute names:
vertex.names
adjacency matrix:
a b c d e
a 0 1 1 1 0
b 0 0 1 1 1
c 0 0 0 1 1
d 0 0 0 0 1
e 0 0 0 0 0
set.edge.attribute(net,"weight",A[,3])
gplot(net)
## Another cool feature
s = as.sociomatrix(net,attrname="weight")
plot.sociomatrix(s)
d <- data.frame(p1=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'),
p2=c('b', 'c', 'd', 'c', 'd', 'e', 'd', 'e', 'e'),
counts=c(100, 200, 100,80, 90,100, 100,40,60))
library(igraph)
g <- graph.data.frame(d, directed=TRUE)
print(g, e=TRUE, v=TRUE)
tkplot(g, vertex.label=V(g)$name)