使用位置,颜色等对gexf编写networkx图

时间:2015-07-16 09:14:58

标签: python networkx

我使用networkx构建了一个图形并使用弹簧布局函数生成了一个漂亮的图,遗憾的是这并没有转移到gexf文件

我认为networkx工具的重点是能够编写可读的图形文件,所以如果在python中有一个简单的解决方案,我会犹豫手动更改xml

这里是我想要的格式的链接,因为最终目标是使用sigma js工具将其放入网页

https://github.com/jacomyal/sigmajs.org/blob/master/assets/data/les-miserables.gexf

或更具体地说这种格式: http://gexf.net/format/viz.html

这是gephi示例中使用悲惨世界的示例charsacters是否有一种方法可以简单地使用nx.write_gexf(G, "")命令,同时还专门编写属性可以以相同的格式输出它?

1 个答案:

答案 0 :(得分:3)

这更像是GEPHI"问题"而不是Networkx。

非常简单,networkx.write_gexf将尝试导出gexf文件可以描述的每个可能的节点和边缘属性。然后由GEPHI的用户重新将特定节点或边缘属性设置为内部GEPHI属性。

简而言之,假设:

import networkx

#Create a Graph
G = networkx.Graph()
G.add_node("Alpha", X=10, Y=10)
G.add_node("Beta", X=-10, Y=-10)
G.add_path(["Alpha", "Beta"])

鉴于此图表,现在让我们尝试将其保存在GEXF中:

#Attempt to save the graph in gexf
#PLEASE NOTE: This call will succeed and MyGraph will be created on the disk.
#You can now do a cat MyGraph.gexf and verify that attributes X and Y are indeed included in the file.
networkx.write_gexf(G, "MyGraph.gexf)

#Add another node with an attribute of type tuple
G.add_node("Gamma", pos=(5,5))

#Attempt to save the graph in gexf again
#PLEASE NOTE: This call will fail because it is impossible to 'unpack' the tuple without further knowledge
networkx.write_gexf(G, "MyOtherGraph.gexf")

现在,networkx.layout(例如pos = networkx.layout.random_layout(G))将节点的位置作为可迭代数组返回,这些位置可以保存回节点,但如上例所示,如果您尝试保存具有此类节点属性的图形将失败。

因此,我担心你必须解压缩布局返回的坐标并将它们分配给单个节点属性,就像上面描述的那样(请参阅属性XY在这里使用)。

完成此操作后,可以毫无问题地导出图表。

现在,在Gephi中,为了将节点属性重新分配给内部Gephi属性,您首先需要安装this plugin。完成后,按照正常情况将图表加载到GEPHI中,然后切换到数据实验室"查看您可以在哪里查看所有节点及其属性。 如果您已安装重铸插件,请点击"更多操作"然后"设置标准栏" (原文如此)。这将启动一个相当自我解释的对话框,允许您“映射”#34;内部GEPHI属性的图形特定属性,例如X-coordinate。使用它来分配两个坐标,然后切换到"概述"查看节点重新定位到其保存的位置。

希望这有帮助。