我正在尝试在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
。