Направленный граф JUNG

Я пытаюсь построить силовой направленный граф в 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.

Кто-нибудь знает, как этого добиться?

Н.Б. Юнг версия 2.0.1


person atmd    schedule 24.06.2015    source источник
comment
Некоторые связанные примеры prefuse рассматриваются здесь.   -  person trashgod    schedule 24.06.2015


Ответы (1)


Похоже, вы просматриваете документы jung-1.x. В jung-2.x DirectedSparseGraph<V, E> является общим классом с параметрами типа для вершин V и ребер E.

Это также метод определения вершин и ребер с произвольными свойствами. Например. если вы хотите иметь веса ребер, создайте подходящий класс ребер с весом:

class Edge {
    public double weight;
}

Обратите внимание, что обычно вы также хотите реализовать equals() и hashCode() по крайней мере для вершин.

Если вы хотите использовать вес для макета (например, в SpringLayout, один из конструкторов принимает lengthFunction.

person dhke    schedule 24.06.2015