首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何简化网络图?

如何简化网络图?
EN

Stack Overflow用户
提问于 2021-08-10 20:01:04
回答 1查看 893关注 0票数 1

我希望“简化”一个NetworkX有向图在选定的集合节点上。例如,我有这个起始有向图

我希望看到仅节点1、2、4和6的子图中的关系,即如下:

基本上,我只想显示所选节点上的“结果依赖关系”。

到目前为止,我已经尝试了下面的子图方法。

创建原始图:

代码语言:javascript
复制
G = nx.DiGraph() 
G.add_edges_from([(1,3),(3,4),(1,5),(5,6),(2,6),(4,6)])

..and然后创建一个子图

代码语言:javascript
复制
chosen_nodes = [1,2,4,6]
SG = G.subgraph(chosen_nodes)

但是,生成的子图在2-6和4-6关系之外的边上不保留任何依赖关系。

代码语言:javascript
复制
print(list(SG.edges))
>> [(4, 6), (2, 6)]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-11 19:31:12

我认为一个清晰的方法就是生成一个传递闭包的子图。

代码语言:javascript
复制
from networkx.algorithms.dag import transitive_closure

def dependency_graph(G, nodes):
    return transitive_closure(G).subgraph(nodes)

print(dependency_graph(G, [1, 2, 4, 6]).edges)
>> [(1, 4), (1, 6), (4, 6), (2, 6)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68732873

复制
相关文章

相似问题

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