如何使用Python创建Gephi网络图?

19

我刚了解到GephiStreamer。https://pypi.python.org/pypi/GephiStreamer

使用该软件包,可以从Python向Gephi发送指令,在Gephi中创建节点和边。

# Create a node with a custom_property
node_a = graph.Node("A",custom_property=1)

# Create edge 
edge_ab = graph.Edge(node_a,node_b,custom_property="hello")
stream.add_edge(edge_ab)
类似地,我想通过Python在Gephi中进行所有操作。这是我通常的做法。
例如:
步骤:
1. 加载节点 2. 加载边缘 3. 计算介数中心性 4. 根据节点的中心性分数更改其大小/颜色 5. 更改图形布局(如forceatlas2) 6. 输出图形
下面是我手动得到的输出结果,但我希望通过从Python发送指令来生成相同的结果。文档没有提供有关创建节点、边缘和图形之外的任何信息。
我还发现了NetworKit:https://networkit.iti.kit.edu/data/uploads/docs/NetworKit-Doc/python/html/gephi.html 这比gephistramer稍微好一点,但需要Python 3.4或更高版本,并且大多数软件包(如pandas、numpy或sickit)都是2.7。
另外,是否有一种方法将我在gephi中创建的文件发送回Python。
请给建议。
PS:我已编辑整个问题的细节,以便现在更容易理解(希望如此)。

你想在使用Python构建图形的同时运行Gephi吗?还是只需要创建一个文件,然后将其加载到Gephi中即可? - Yannis P.
@YannisP。是的,gephi可以运行。但我希望一切都由Python完成。 - user5287246
是的,但您是否想从Python流式传输到Gephi?否则,您可以使用NetworkX并将图形写入GEXF格式,这是Gephi本地支持的。 - Yannis P.
1
再次说明您想要做什么还有点不清楚。您可以使用Gephi打开gexf文件并进行任何处理,除非这是您想要避免的,并且直接从Python中获得与Gephi相同的图形绘制。在这种情况下,请编辑您的帖子以使其更清晰明了。 - Yannis P.
1
实际上,你的问题不是很清楚...看起来你成功在Python中创建了一个图形,并将其发送到Gephi,那么,你的问题到底是什么,用一句话描述? - cedbeu
问题是我必须使用Python完成所有工作,但Python的netowrkx可视化输出不如Gephi令人印象深刻。因此,我想在Python中编写所有代码,并从Gephi借用可视化效果。由于我需要多次进行此操作,并且对于大量网络进行操作,因此应该是自动化的。我无法手动在Gephi上创建图表,应该由Python自动完成(通过发送指令或文件等)。 - user5287246
2个回答

15

我在寻找答案时发现了这个问题。 我选择了Gephi作为我的可视化工具,然后想通过使用Python从我的组织周围提取数据来构建一个该工具良好支持的图形。

我找到了GephiStreamer,它看起来是一种简单而全面的方法,可以从外部python环境(命令行或IDE)构建Gephi中的图形

此时的其他选项包括:


2

这个问题没有简单的答案。在Facebook群组中的人可能知道一些,但我认为最好的方法是从jython调用Gephi工具包(即可用的jar),请参考这里的示例。问题在于jython不允许安装numpy和一系列其他库,但我想你可以通过将一个脚本的输出导入另一个脚本或使用类似Celery的队列来解决此问题。

所以我会编写一个名为graph_construction.py的脚本,它使用networkx构建图形,然后将其以gexf格式写入标准输出。然后我会编写第二个脚本gephi.py,在gephi中执行操作,比如将图形写入pdf文件,然后执行以下操作:

python graph_construction.py | jython gephi.py output.pdf

祈求它能够工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接