subgraph_view#
- subgraph_view(G, filter_node=<function no_filter>, filter_edge=<function no_filter>)[源代码]#
观
G
对节点和边应用筛选器。subgraph_view
提供输入图的只读视图,根据两个筛选函数的结果排除节点和边filter_node
和filter_edge
.这个
filter_node
函数接受一个参数(节点)并返回True
如果节点应该包含在子图中,并且False
如果不应该包括在内。这个
filter_edge
函数接受两个(或三个参数,如果G
是一个多重图)--描述一条边的节点,如果可能的话,加上边键---并返回True
如果边应该包含在子图中,并且False
如果不应该包括在内。在查询图元素时,节点和边过滤器函数都会被调用,这意味着创建视图没有前期成本。
- 参数
- 返回
- graphnetworkx.Graph
输入图形的只读图形视图。
实例
>>> G = nx.path_graph(6)
过滤函数在节点上操作,并返回
True
如果该节点应出现在视图中:>>> def filter_node(n1): ... return n1 != 5 ... >>> view = nx.subgraph_view(G, filter_node=filter_node) >>> view.nodes() NodeView((0, 1, 2, 3, 4))
我们可以使用闭包模式根据附加数据筛选图形元素,例如,对附加到图形的边缘数据进行筛选:
>>> G[3][4]["cross_me"] = False >>> def filter_edge(n1, n2): ... return G[n1][n2].get("cross_me", True) ... >>> view = nx.subgraph_view(G, filter_edge=filter_edge) >>> view.edges() EdgeView([(0, 1), (1, 2), (2, 3), (4, 5)])
>>> view = nx.subgraph_view(G, filter_node=filter_node, filter_edge=filter_edge,) >>> view.nodes() NodeView((0, 1, 2, 3, 4)) >>> view.edges() EdgeView([(0, 1), (1, 2), (2, 3)])