我需要处理由 yEd 图创建的 graphml (XML) 文件,以获取该图的节点和边属性。我需要使用 networkX 库来做到这一点。我是 Python 的新手,而且我从未使用过 networkX 库,因此将不胜感激。
问问题
4768 次
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 回答