read_graphml#

read_graphml(path, node_type=<class 'str'>, edge_key_type=<class 'int'>, force_multigraph=False)[source]#

从 path 读取 GraphML 格式的图。

参数:
path文件或字符串

要写入的文件或文件名。以 .gz 或 .bz2 结尾的文件名将被压缩。

node_type: Python 类型 (默认: str)

将节点 id 转换为此类型

edge_key_type: Python 类型 (默认: int)

将 graphml 边 id 转换为此类型。多重图使用 id 作为边键。非多重图将其添加到边属性字典中,名称为 “id”。

force_multigraphbool (默认: False)

如果为 True,返回带有边键的多重图。如果为 False(默认),当图中有平行边时返回多重图。

返回值:
graph: NetworkX 图

如果存在平行边或 force_multigraph=True,则返回 MultiGraph 或 MultiDiGraph。否则返回 Graph/DiGraph。如果文件指示为有向图,则返回的图为有向图。

注意

默认的节点和边属性不会传播到每个节点和边。如果需要,可以通过 G.graph 获取它们,并使用类似下面的方式应用于节点和边属性。 (此句原文如此,可能省略了示例代码)

>>> default_color = G.graph["node_default"]["color"]  
>>> for node, data in G.nodes(data=True):  
...     if "color" not in data:
...         data["color"] = default_color
>>> default_color = G.graph["edge_default"]["color"]  
>>> for u, v, data in G.edges(data=True):  
...     if "color" not in data:
...         data["color"] = default_color

此实现不支持混合图(有向边和无向边混合)、超图、嵌套图或端口。

对于多重图,GraphML 边 “id” 将用作边键。如果未指定,将使用 “key” 属性。如果没有 “key” 属性,将提供一个默认的 NetworkX 多重图边键。

可以读取带有 yEd “yfiles” 扩展名的文件。节点形状的类型将保留在 shape_type 节点属性中。

yEd 压缩文件(扩展名为 “file.graphmlz”)可以通过将文件名重命名为 “file.graphml.gz” 来读取。