我使用 networkx 构建了一个图表,并使用 spring 布局函数生成了一个漂亮的图,不幸的是,这没有传输到 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 示例中使用《悲惨世界》字符的示例,是否有一种方法可以简单地使用命令nx.write_gexf(G, ""),同时还专门编写属性,可以以相同的格式输出它?
这更像是一个 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"])
Run Code Online (Sandbox Code Playgroud)
给定此图,现在让我们尝试使用以下命令将其保存在 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")
Run Code Online (Sandbox Code Playgroud)
现在,networkx.layout(例如pos = networkx.layout.random_layout(G))将节点的位置作为可迭代数组返回,并且这些位置可以保存回节点,但如上面的示例所示,如果您尝试保存具有此类节点属性的图形,它会将失败。
因此,恐怕您必须解压布局返回的坐标并将它们分配给单个节点属性,就像上面描述的那样(请参阅此处使用的属性X和哪些属性)。Y
完成此操作后,可以毫无问题地导出图表。
现在,一旦进入 Gephi 并实现将节点属性重新分配给内部 Gephi 属性,您首先需要安装此插件。完成此操作后,按照正常方式将图表加载到 GEPHI 中,然后切换到“数据实验室”视图,您可以在其中查看所有节点及其属性。如果您已经安装了重铸插件,请单击“更多操作”,然后单击“设置标准列”(原文如此)。这将启动一个相当不言自明的对话框,它允许您将图形特定属性“映射”到内部 GEPHI 属性,例如X-coordinate. 使用它来分配两个坐标,然后切换到“概述”视图以查看节点重新定位到其保存的位置。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
2859 次 |
| 最近记录: |