gpt4 book ai didi

python - 将包含位置、颜色等的 networkx 图写入 gexf

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:01 26 4
gpt4 key购买 nike

我已经使用 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

这是使用 les miserables charsacters 的 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"])

鉴于此图表,现在让我们尝试将其保存在 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,然后切换到“数据实验室” View ,您可以在其中查看所有节点及其属性。 如果您已经安装了 recast 插件,点击“更多操作”,然后点击“设置标准列”(原文如此)。这将启动一个相当 self 解释的对话框,它允许您将图形特定属性“映射”到内部 GEPHI 属性,例如 X-coordinate。使用它来分配两个坐标,然后切换到“概览” View 以查看重新定位到其保存位置的节点。

希望这对您有所帮助。

关于python - 将包含位置、颜色等的 networkx 图写入 gexf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31450090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com