【问题标题】:Automating force layout for a network graph自动化网络图的力布局
【发布时间】:2016-06-07 17:12:37
【问题描述】:

我正在尝试自动将力布局应用于网络图(如节点和边)。我想在不需要人工干预的情况下这样做(如在 Gephi 中),而是做一些事情,比如将较大的节点等距间隔在对人类友好的距离上。我们基本上想用服务器端或自动化解决方案替换 Gephi。

如果可能的话,任何人都知道对此的服务器端解决方案吗?

【问题讨论】:

    标签: graph-theory force-layout gephi


    【解决方案1】:

    对于“自动化”,我怀疑您的意思是不必监视布局何时达到收敛,因此节点已停止移动 (?)。

    Force 布局或类似的,用于许多其他可以在服务器端使用的包中。

    例如,sfdp or neato 来自 graphviz。 Graphviz 将产生广泛的输出,其中包括 SVG(用于提供对图形元素的访问比位图图像更多的选项)。

    就 Python 而言,有诸如 Networkxigraph 之类的模块提供了一些绘图功能。 Networkx 特别提供a wide range of drawing options,例如forcespectral layout(这对于密集图非常有用),但它也可以interface to graphviz,因此可以更好地控制处理图的整个过程。

    希望这会有所帮助。

    【讨论】:

    • 对,我们正在尝试均匀分布最大节点,以便人们更容易看到主要节点。我们使用 gephi 将较大的节点分开,然后将较大的节点冻结在原地,然后应用强制布局来很好地集群社区。我们正在尝试从流程中删除 gephi 并在没有人工干预的情况下运行。有意义吗?
    • 是的,确实如此。以前也很有意义:) 你可以用 Graphviz 或者可能是 graphviz 和 networkx 的组合来做到这一点。您可能需要一些代码,因为 graphviz 不会为您处理这种依赖于节点大小的排序。 (你是在追求实际的代码吗?)