【发布时间】:2013-06-08 18:34:15
【问题描述】:
我需要处理由 yEd 图创建的 graphml (XML) 文件,以获取该图的节点和边属性。我需要使用 networkX 库来做到这一点。我是 Python 的新手,我从来没有使用过 networkX 库,所以任何帮助都将不胜感激。
【问题讨论】:
我需要处理由 yEd 图创建的 graphml (XML) 文件,以获取该图的节点和边属性。我需要使用 networkX 库来做到这一点。我是 Python 的新手,我从来没有使用过 networkX 库,所以任何帮助都将不胜感激。
【问题讨论】:
这应该让你开始......
在 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'})
最后一个例子,如果想访问节点n5的x坐标,那么:
>>> print G['n5']['x']
会给你85.0。
【讨论】:
('n0', {}) ('n1', {}) ('n2', {})
我读了这个问题并想:doc for that package is REALLY good,即使是 Python 标准。你真的应该检查一下。
如果您有一个图形 XML 文件,它看起来就像这样简单:
>>> mygraph=nx.read_gml("path.to.file")
【讨论】: