首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取r/python中三合会的详细信息?

如何获取r/python中三合会的详细信息?
EN

Stack Overflow用户
提问于 2019-02-15 09:56:32
回答 1查看 708关注 0票数 0

目前,我正在使用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

代码:

代码语言:javascript
运行
复制
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)

因此,我的实际图表如下所示。

如果需要,我很乐意提供更多的细节。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-15 16:57:08

似乎没有一个内置的方法来实现您想要的Networkx。但是,您可以手动遍历每个三合会,并定义它属于哪个类:

代码语言:javascript
运行
复制
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]

如果您希望有一个以类作为键的字典,您可以尝试这样的方法:

代码语言:javascript
运行
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54706742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档