我正在尝试在JUNG中构建一个力向图,类似于可以在D3.js中(非常容易)创建的图。

大部分内容都很简单,但是文档有些陈旧,示例中没有包含强制使用的示例(尽管那里有一个Java applet声称是演示版,但没有显示任何内容)

无论如何,使用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. jung版本是2.0.1

最佳答案

您似乎在看jung-1.x文档。在jung-2.x中,DirectedSparseGraph<V, E>是泛型类,具有用于顶点V和边线E的类型参数。

这也是定义具有任意属性的顶点和边的方法。例如。如果要具有边缘权重,请创建具有权重的合适边缘类别:

class Edge {
    public double weight;
}


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

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

10-08 17:34