首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetworkX --创建属于4节点集团的所有节点的新图

NetworkX --创建属于4节点集团的所有节点的新图
EN

Stack Overflow用户
提问于 2014-08-10 03:36:58
回答 1查看 4.3K关注 0票数 5

我有一个网络,我想通过派系来绑定,但我还没有完全弄清楚如何正确地做到这一点。我可以使用k-core来完成同样的过程,但不确定创建一个只包含团的图的正确过程是什么。

我希望,如果我展示了使用k_core函数查找子图的过程,有人可以帮助我更改我的过程,使用clique函数查找子图。

首先,我创建了一个图表,我将使用空手道俱乐部的图表:

代码语言:javascript
复制
In [1]: import networkx as nx

In [2]: g = nx.karate_club_graph()

在iPython中绘制图形:

代码语言:javascript
复制
In [3]: pylab inline
Populating the interactive namespace from numpy and matplotlib

In [4]: nx.draw(g)

接下来,我找到4核内的所有边(有4个或更多的边):

代码语言:javascript
复制
In [5]: g_4k_edges = nx.k_core(g, k=4).edges()

将这些边添加到新图中:

代码语言:javascript
复制
In [6]: g_4k = nx.Graph()
In [7]: g_4k.add_edges_from(g_4k_edges)

绘制4核图:

代码语言:javascript
复制
In [8]: nx.draw(g_4k)

你知道如何做到这一点吗,但不是使用k- more来限制网络,而是使用具有4个或更多顶点的集团?

EN

回答 1

Stack Overflow用户

发布于 2014-08-18 02:08:23

这里有一种使用团生成子图的方法。

代码语言:javascript
复制
import networkx as nx

g = nx.karate_club_graph()

查找包含4个或更多节点的所有集团:

代码语言:javascript
复制
cliques = nx.find_cliques(g)
cliques4 = [clq for clq in cliques if len(clq) >= 4]

从所有足够大的集团中创建g的子图:

代码语言:javascript
复制
nodes = set(n for clq in cliques4 for n in clq)
h = g.subgraph(nodes)

丢弃h中度小于4的节点:

代码语言:javascript
复制
deg = nx.degree(h)
nodes = [n for n in nodes if deg[n] >= 4]

所需的图k是包含以下节点的h的子图:

代码语言:javascript
复制
k = h.subgraph(nodes)

以下是所需图形的图像:

代码语言:javascript
复制
nx.draw(k)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25222322

复制
相关文章

相似问题

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