какую из фреймворков для рисования графов Java с открытым исходным кодом использовать для сетевой диаграммы со следующими требованиями? В графе будет менее 1000 узлов.
1) имеет параллельные ребра
2) направленные и неориентированные ребра в пределах одного графа
3) узлы представлены изображениями
4) взаимодействие пользователя с узлами и ребрами
5) динамическое добавление / удаление узлов и ребер
6) множественная маркировка на узлах и ребрах, разные уровни маркировки могут быть включены / выключены пользователями. (например, рисование в слоях и включение / выключение слоя)
7) различные алгоритмы компоновки для отображения топологий звезды, кольца, сетки
Я оценил JUNG и Prefuse. Это то, что я нашел для каждого из своих требований.
1) Prefuse не может отображать параллельные края, пока JUNG поддерживает его. Можно ли изменить код предварительного предохранителя для отображения параллельных краев? Поскольку это включает в себя базовые изменения уровня данных, я считаю, что это будет сложнее, чем изменение обычного настраиваемого рендеринга.
2) Я не нашел никаких ссылок на комбинированный граф (как направленные, так и неориентированные ребра) как в prefuse, так и в JUNG. Кто-нибудь знает иначе?
3) Это кажется простым как с Prefuse, так и с JUNG.
4) И снова prefuse и JUNG обеспечивают поддержку взаимодействия с пользователем.
5) И предварительный предохранитель, и JUNG поддерживают его. Как работает каждый фреймворк при перерисовке графика? В другом посте я видел, что prefuse плохо работает для динамических обновлений (Prefuse Toolkit: динамическое добавление узлов и ребер)
6) Это сводится к модификации графика и его перерисовке. Таким образом, вопрос становится таким же, как 5)
7) И JUNG, и prefuse имеют несколько алгоритмов компоновки. Но когда я попытался отобразить один и тот же набор данных с помощью FruchtermanReingoldLayout как в JUNG, так и в Prefuse, я получил разные изображения. Есть идеи, почему? Каким-то образом кажется, что алгоритмы компоновки в Prefuse лучше отображают компоновку, чем в JUNG (я думаю, рендеринг тоже лучше), хотя большинство алгоритмов компоновки в Prefuse основаны на реализации JUNG. Предварительные макеты, такие как ForceDirectedLayout / FruchtermanReingoldLayout и CircleLayout, напрямую сопоставляются с топологиями звезды, круга и сетки.
Вне этих требований prefuse имеет хорошую поддержку выражений и языка запросов, но похоже, что он не развивается активно, в отличие от JUNG. у кого лучше визуализация? Есть предложения, какой из них подойдет и как преодолеть недостатки?
Любые другие фреймворки, которые я могу использовать?