4

我需要处理由 yEd 图创建的 graphml (XML) 文件,以获取该图的节点和边属性。我需要使用 networkX 库来做到这一点。我是 Python 的新手,而且我从未使用过 networkX 库,因此将不胜感激。

4

2 回答 2

6

这应该让你开始......

在 yEd 中创建图形并使用 GraphML 格式文件 > 另存为...。说,你把它保存到文件'test.graphml'。

导航到该目录并运行 Python:

>>> import networkx as nx
>>> import matplotlib.pyplot as plt
>>> G = nx.read_graphml('test.graphml')
>>> nx.draw(G)
>>> plt.show()
>>> 

此外,如果要读取和处理节点的属性,可以遍历它们,从它们中提取数据,如下所示:

for node in G.nodes(data=True):
    print node

这将导致类似这样的结果(我在 yEd 中创建了一个随机图来测试它):

('n8', {'y': '178.1328125', 'x': '268.0', 'label': '8'})
('n9', {'y': '158.1328125', 'x': '0.0', 'label': '9'})
('n0', {'y': '243.1328125', 'x': '160.0', 'label': '0'})
('n1', {'y': '303.1328125', 'x': '78.0', 'label': '1'})
('n2', {'y': '82.1328125', 'x': '221.0', 'label': '2'})
('n3', {'y': '18.1328125', 'x': '114.0', 'label': '3'})
('n4', {'y': '151.1328125', 'x': '170.0', 'label': '4'})
('n5', {'y': '122.1328125', 'x': '85.0', 'label': '5'})
('n6', {'y': '344.1328125', 'x': '231.0', 'label': '6'})
('n7', {'y': '55.1328125', 'x': '290.0', 'label': '7'})

最后一个例子,如果想要访问 node 的 x 坐标n5,那么:

>>> print G['n5']['x']

会给你85.0

于 2013-06-08T19:16:44.040 回答
1

我读了这个问题并想:那个包的文档真的很好,即使按照 Python 标准。你真的应该检查一下。

如果您有一个图形 XML 文件,它看起来就像这样简单:

>>> mygraph=nx.read_gml("path.to.file")

于 2013-06-08T19:16:11.273 回答