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

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

基本上,我只想显示所选节点上的“结果依赖关系”。
到目前为止,我已经尝试了下面的子图方法。
创建原始图:
G = nx.DiGraph()
G.add_edges_from([(1,3),(3,4),(1,5),(5,6),(2,6),(4,6)])..and然后创建一个子图
chosen_nodes = [1,2,4,6]
SG = G.subgraph(chosen_nodes)但是,生成的子图在2-6和4-6关系之外的边上不保留任何依赖关系。
print(list(SG.edges))
>> [(4, 6), (2, 6)]发布于 2021-08-11 19:31:12
我认为一个清晰的方法就是生成一个传递闭包的子图。
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)]https://stackoverflow.com/questions/68732873
复制相似问题