DiGraph.subgraph#

DiGraph.subgraph(nodes)#

返回在上引发的子图的子图视图 nodes .

图的诱导子图包含 nodes 以及这些节点之间的边缘。

参数
nodes列表,可迭代

将遍历一次的节点的容器。

返回
G子图视图

图形的子图视图。图形结构不能更改,但节点/边属性可以与原始图形共享。

笔记

图形、边和节点属性与原始图形共享。视图排除了对图形结构的更改,但对属性的更改反映在原始图形中。

要使用自己的边/节点属性副本创建子图,请使用:g.subgraph(nodes.copy())

对于图到子图的就地缩减,您可以删除节点:g.remove_nodes_from( [n表示n,如果n不在集合中(节点)] )

子图视图有时不是您想要的。在大多数情况下,如果您想做的不仅仅是查看诱导边,那么将子图创建为它自己的图,代码如下:

# Create a subgraph SG based on a (possibly multigraph) G
SG = G.__class__()
SG.add_nodes_from((n, G.nodes[n]) for n in largest_wcc)
if SG.is_multigraph():
    SG.add_edges_from((n, nbr, key, d)
        for n, nbrs in G.adj.items() if n in largest_wcc
        for nbr, keydict in nbrs.items() if nbr in largest_wcc
        for key, d in keydict.items())
else:
    SG.add_edges_from((n, nbr, d)
        for n, nbrs in G.adj.items() if n in largest_wcc
        for nbr, d in nbrs.items() if nbr in largest_wcc)
SG.graph.update(G.graph)

实例

>>> G = nx.path_graph(4)  # or DiGraph, MultiGraph, MultiDiGraph, etc
>>> H = G.subgraph([0, 1, 2])
>>> list(H.edges)
[(0, 1), (1, 2)]