generic_graph_view#

generic_graph_view(G, create_using=None)[source]#

返回 G 的只读视图。

G 及其属性不会被复制,而是通过与 G 相同类(或 create_using 中指定的类)的新图对象进行查看。

参数:
G

有向/无向图/多图。

create_usingNetworkX 图构造函数, 可选 (默认=None)

要创建的图类型。如果为图实例,则在填充前清空。如果为 None,则从 G 推断出合适的图类型。

返回:
newG

通过 create_using 类查看的输入图 G 及其属性的视图。

引发:
NetworkXError

如果 G 是多图(或多有向图)但 create_using 不是,反之亦然。

注意

返回的图视图是只读的(不能修改图)。然而,该视图反映了 G 中的任何变化。其目的是模仿字典视图。

示例

>>> G = nx.Graph()
>>> G.add_edge(1, 2, weight=0.3)
>>> G.add_edge(2, 3, weight=0.5)
>>> G.edges(data=True)
EdgeDataView([(1, 2, {'weight': 0.3}), (2, 3, {'weight': 0.5})])

该视图暴露了原始图的属性。

>>> viewG = nx.graphviews.generic_graph_view(G)
>>> viewG.edges(data=True)
EdgeDataView([(1, 2, {'weight': 0.3}), (2, 3, {'weight': 0.5})])

G 的更改会反映在 viewG 中。

>>> G.remove_edge(2, 3)
>>> G.edges(data=True)
EdgeDataView([(1, 2, {'weight': 0.3})])
>>> viewG.edges(data=True)
EdgeDataView([(1, 2, {'weight': 0.3})])

我们可以使用 create_using 参数更改图的类型。

>>> type(G)
<class 'networkx.classes.graph.Graph'>
>>> viewDG = nx.graphviews.generic_graph_view(G, create_using=nx.DiGraph)
>>> type(viewDG)
<class 'networkx.classes.digraph.DiGraph'>