荣格力有向图

JUNG force directed graph

我正在尝试在 JUNG 中构建一个力导向图,类似于您可以在 D3.js.

中(非常容易地)创建的图

大部分都非常简单,但文档有点旧,示例不包括力导向的示例(尽管那里有一个 java 小程序声称是演示,但它什么也没显示)

无论如何,使用DirectedSparseGraph我已经实现了大部分功能:

directedGraph = new DirectedSparseGraph();

directedGraph.addVertex("someVertex");
directedGraph.addVertex("someOtherVertex");
// etc
directedGraph.addEdge("someVertex", "someOtherVertex");
// etc

这几乎完全符合我的要求,但我不知道如何为边缘分配长度以显示不同的力。我查看了文档和 Google 但找不到任何东西。

我希望是这样的 directedGraph.addEdge([edge 1], [edge 2], [edge length]); 但它似乎不存在于 api 中。

有人知道如何实现吗?

N.b。荣格版本是 2.0.1

看起来您正在查看 jung-1.x 文档。在 jung-2.x DirectedSparseGraph<V, E> 中是一个泛型 class,其顶点 V 和边 E.

具有类型参数

这也是定义具有任意属性的顶点和边的方法。例如。如果你想有边权重,创建一个合适的边class,权重为:

class Edge {
    public double weight;
}

请注意,您通常还希望至少为顶点实现 equals()hashCode()

如果您想使用权重进行布局(例如在 SpringLayout, one of the constructors 中需要 lengthFunction