2016-11-11 7 views
0

Я хочу перейти с YFiles на Jung. Когда дело доходит до небольших графиков, дисплей почти похож на YFiles. Но для больших графиков я не нашел макета, чтобы оправдать мои ожидания. Вот граф с 1000 элементов, YFiles кажется, чтобы отобразить очень хорошо: YFiles Graph DisplayJUNG - лучшие макеты для отображения больших графиков (~ 1000 узлов)

В Юнге, существует противоречивые расстояния между подграфами, как на этой картинке:

JUNG Graph Display

Юнга I использовали SparseMultigraph с FRLayout со следующими атрибутами:

FRLayout<GraphNode, GraphLink> layout = new FRLayout<>(graph); 
layout.setMaxIterations(100); 
layout.setAttractionMultiplier(0.2); // default 0.75 
layout.setRepulsionMultiplier(0.3); // default 0.75 

Я много играл с числом итераций, притяжения и отталкивания мультипликатора мультипликатора б ut это лучшая комбинация, которую я нашел.

Есть ли подходящий макет/график для отображения такого графика, чтобы получить что-то подобное с тем, что отображает YFiles?

ответ

0

У вас есть очень конкретный результат, который вы хотите от своего макета, поэтому, вероятно, ваш лучший выбор - реализовать собственный алгоритм компоновки. Макеты, которые предоставляет JUNG, предназначены для того, чтобы быть достаточно универсальными и работать достаточно хорошо для самых разных графиков; они не должны делать то, что вам нужно для любого конкретного графика.

Один из вариантов, который у вас был бы, если вы узнаете, какой алгоритм использует YFiles, - это просто повторить их алгоритм.

Однако в этом случае, поскольку ваш график представляет собой агрегацию нескольких независимых изолированных компонентов точно такого же размера и топологии, я бы предложил создать специализированную реализацию, определяющую график детерминированным образом. Вы можете использовать WeakComponentClusterer для идентификации компонентов, используя простую формулу, чтобы выяснить, где должны относиться относительные позиции для каждого элемента компонента, а затем выложить каждый компонент.

StaticLayout был бы полезен для детерминированного подхода.

+0

Я не совсем уверен, но вполне может быть, что мы компоновали компоненты отдельно, чтобы избежать этой конкретной проблемы. Я думаю, JUNG может потребовать, чтобы этот шаг был явным. – Joey