微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从具有任何选定节点的大型 Networkx 图中提取子图? 相关文档示例使用

如何解决从具有任何选定节点的大型 Networkx 图中提取子图? 相关文档示例使用

我在下面有一个使用 pyvis 库制作的大型网络图。 HTML 加载/渲染时间非常长,加载时间更长。

enter image description here

我想单独提取子图

enter image description here

我想通过选择节点提取上图中标记的任何子图。在简单而不是绘制整个网络的情况下,我想绘制一个选定的子图。

有没有提取全网子图的python函数

解决方法

在 networkx 库中,函数 networkx.algorithms.clique.cliques_containing_node 返回包含给定节点的所有最大团。

相关文档

示例使用

构建图表

import networkx as nx
import itertools as it
import matplotlib.pyplot as plt

G = nx.Graph()

G.add_nodes_from(list(range(8)))
G.add_edges_from(it.combinations(range(0,4),2))
G.add_edges_from(it.combinations(range(4,7),2))
G.add_edges_from([(3,(6,7)])

print(G.nodes)
# NodeView((0,1,2,3,4,5,6,7))

print(G.edges)
# EdgeView([(0,1),(0,2),3),(1,(2,(3,(4,5),6),(5,7)])

print(G.adj)
# AdjacencyView({0: {1: {},2: {},3: {}},1: {0: {},2: {0: {},1: {},3: {0: {},4: {}},4: {5: {},6: {},5: {4: {},6: {}},6: {4: {},5: {},7: {}},7: {6: {}}})

nx.draw(G,with_labels=True,font_weight='bold')
plt.show()

Graph with small cliques

在我们的图表上调用 cliques_containing_node

print(nx.algorithms.clique.cliques_containing_node(G,[0,7]))
# {0: [[3,2]],4: [[3,4],[5,6]],7: [[6,7]]}

这里的函数nx.algorithms.clique.cliques_containing_node告诉我们节点0在极大团[0,3]中;节点 4 在两个极大团中,[3,4] 和 [5,6];并且节点 7 在极大团 [6,7] 中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。