如何使用networkx导出网络和graphml中的属性?

2024-10-03 06:32:00 发布

您现在位置:Python中文网/ 问答频道 /正文

  1. 嗨,我对网络很陌生,我一直在尝试编程一个代码,获取文件夹的所有.edges和.nodes文件并生成一个graphml文件,这样我就可以在另一个软件中看到它了。但是我还需要在节点中添加一些颜色,但是当我尝试时,我得到了:keyror29
  2. 我在节点数组中运行一个循环来添加每个节点的颜色。在
  3. 下面是我尝试添加color属性的代码部分。因此,节点将用4种不同的颜色着色:最佳适应度、最差适应度、前10%最佳适合度和10%较差。在

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


Tags: 文件代码网络文件夹节点软件颜色编程
1条回答
网友
1楼 · 发布于 2024-10-03 06:32:00

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

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

然而,根据本问题目前所提到的情况,这里有几点建议:

  1. 试着先构建图形,然后再给它着色。如果您已经有了适合度数据,这可能显得不够充分,但这将是最简单的方法让您得到一个工作的代码。

  2. 确保您的节点id确实是整数。也就是说,在图中,每个节点都是通过其索引值已知的。例如2、3、5等,而不是“Paris”、“London”、“Berlin”等(即字符串节点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将尝试将遇到的每个节点和边属性写入到适当的格式。有关这方面的更多信息,请参阅对这个问题的答复。因此,一旦您对给定图(G)的结构感到满意,那么您可以简单地调用networkx.write_graphml(G, 'mygraph.gml')将其保存到磁盘(其中networkx是模块的名称)。networkx.write_*函数将把图形(G)的完整版本导出为多种不同格式,或者在数据类型无法正确序列化时引发异常。

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

相关问题 更多 >