【问题标题】:Processing graphml file with networkx in python在python中使用networkx处理graphml文件
【发布时间】:2013-06-08 18:34:15
【问题描述】:

我需要处理由 yEd 图创建的 graphml (XML) 文件,以获取该图的节点和边属性。我需要使用 networkX 库来做到这一点。我是 Python 的新手,我从来没有使用过 networkX 库,所以任何帮助都将不胜感激。

【问题讨论】:

    标签: python xml networkx


    【解决方案1】:

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

    在 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

    【讨论】:

    • 在当前版本的yEd Live中,保存为graphML文件,然后导入NetworkX 2.x,节点属性全部丢失:('n0', {}) ('n1', {}) ('n2', {})
    【解决方案2】:

    我读了这个问题并想:doc for that package is REALLY good,即使是 Python 标准。你真的应该检查一下。

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

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

    【讨论】:

    • @gauden:我的意思是——networkX 文档是一个特别好的文档示例,来自一组特别好的示例:)
    • 谢谢!是的,我阅读了整个教程,但它只解释了 networkx 命令,而不是它们如何与 xml 文件交互,这让我感到困惑
    • 文档链接对我不起作用; this one 确实如此。
    猜你喜欢
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多