目前,我正在使用igraph来获取使用triad_census(g)对给定有向图进行的简化普查。这将返回16个类中每个类的三合会计数。
例如,16 3 0 10 1 0 0 0 0 0 0 0 0 0 0 0
不过,我想知道更多有关三合会的细节,而不是这些摘要数字。
也就是说,假定网络拥有16 %的003,它们是什么?假设网络有3 012,它们是什么?
示例: 012的三个小径是(john -> emi, jenne),(cena -> ally, john),(emi -> peter, david)
在r或python中有这样做的方法吗?
MWE
图形数据:http://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxkYWlzaGl6dWthfGd4OmFmZTI0NjhlMjQ0ZDQ5MQ
代码:
library(igraph)
#import the sample_dw_adj.csv file:
dat=read.csv(file.choose(),header=TRUE,row.names=1,check.names=FALSE) # read .csv file
m=as.matrix(dat)
net=graph.adjacency(m,mode="directed",weighted=TRUE,diag=FALSE)
plot.igraph(net,vertex.label=V(net)$name,layout=layout.fruchterman.reingold, vertex.label.color="black",edge.color="black",edge.width=E(net)$weight/3, edge.arrow.size=1.5)因此,我的实际图表如下所示。

如果需要,我很乐意提供更多的细节。
发布于 2019-02-15 16:57:08
似乎没有一个内置的方法来实现您想要的Networkx。但是,您可以手动遍历每个三合会,并定义它属于哪个类:
from itertools import combinations
triad_class = {}
for nodes in combinations(G.nodes, 3):
triad_class[nodes] = [k for k, v in nx.triads.triadic_census(G.subgraph(nodes)).items() if v][0]如果您希望有一个以类作为键的字典,您可以尝试这样的方法:
from itertools import combinations
triad_class = {}
for nodes in combinations(G.nodes, 3):
tc = [k for k, v in nx.triads.triadic_census(G.subgraph(nodes)).items() if v][0]
triad_class.setdefault(tc, []).append(nodes)https://stackoverflow.com/questions/54706742
复制相似问题