【问题标题】:How export a network and the attributes in graphml with networkx?如何使用networkx导出网络和graphml中的属性?
【发布时间】:2015-10-11 05:29:38
【问题描述】:
  1. 嗨,我对网络很陌生,我一直在尝试编写一个代码来获取文件夹的所有 .edges 和 .nodes 文件并生成一个 graphml 文件,以便我可以在另一个软件中对其进行可视化。但是我还需要在我的节点中添加一些颜色,但是当我尝试它时,我得到了:KeyError 29
  2. 我在我的节点数组中运行一个循环来添加每个节点的颜色。
  3. 这是我尝试添加颜色属性的代码部分。因此,节点将用 4 种不同的颜色着色:最佳适应度、最差、前 10% 最佳适应度和 10% 最差。

    for i in range(len(nodes)):
       if nodes[i]==top:
       NetGraph.node[i]['color']='r'
    
  4. 希望你能帮助我!干杯

【问题讨论】:

  • 解决了吗?您觉得回复有帮助吗?

标签: python nodes networkx edges graphml


【解决方案1】:

如果您尝试将存储在多个不同.nodes' and.edges 文件中的关系数据“合并”到一个图表中,那么当从磁盘读取文件时,您可能会遇到一个节点尚未添加到图表中。

总的来说,我觉得需要更多信息才能为这个问题提供更有意义的答案。例如:.node.edge 文件的格式是什么? top 变量中有什么? (这是代表阈值的列表还是单个数字变量?)。

但是,根据到目前为止在这个问题中提到的内容,这里有一些提示:

  1. 尝试先构建图表,然后再为它着色。如果您已经拥有健身数据,这可能显得无足轻重,但这是让您获得工作代码的最简单方法。

  2. 确保您的节点 ID 确实是整数。也就是说,每个节点在图中通过其索引值是已知的。例如 2、3、5 等,而不是“巴黎”、“伦敦”、“柏林”等(即字符串节点 ID)。如果是后者,那么 for 最好形成为:for aNode in G.nodes(data = True):。这将返回一个包含每个节点 ID 的迭代器和一个包含所有现有节点数据的字典。

  3. 如果 top 是单个变量,那么将节点的 ID 与 top 阈值进行比较是没有意义的。这就像说如果 22(这是一个节点 ID)等于 89(这是效率的某种表达)然后将红色应用于节点。 如果top 是一个列表,其中包含所有被视为top 节点的节点,那么条件表达式应该是:if nodes[i] in top:

    1. 您似乎跳过了if (?) 下方的缩进。如果条件为True,则为节点分配颜色的语句需要向右缩进一组,每组4个空格。

    2. 分配颜色的表达式是正确的。

    3. 请注意,Networkx 将尝试将它在 Graph 中遇到的每个节点和边缘属性写入适当的格式。有关这方面的更多信息,请参阅对此问题的回复。因此,一旦您对给定图(G)的结构感到满意,那么您可以简单地调用networkx.write_graphml(G, 'mygraph.gml') 将其保存到磁盘(其中networkx 是模块的名称)。 networkx.write_* 函数会将您的图形 (G) 的完整版本导出为多种不同的格式,或者如果无法正确序列化数据类型,则会引发异常。

我希望这会有所帮助。如果稍后提供更多详细信息,很高兴修改回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多