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'>