JUNG не может отображать большие графики?
Я использую JUNG для проекта, и когда я отображаю относительно большие графики, например 1500 узлов, мой компьютер не сможет с этим справиться (графики отображаются, но если я хочу перемещаться по графику, система становится очень медленной). Какие-либо предложения.
3 ответа
Итак, есть две вещи, которые JUNG визуализация не всегда хорошо масштабирует прямо сейчас:
- итеративно-ориентированные макеты
- взаимодействие: выяснение, на какой узел или ребро (если оно есть) ссылаются для событий зависания и щелчка.
Похоже, это последний, с которым вы столкнулись прямо сейчас.
В зависимости от ваших требований у вас есть несколько вариантов:
- (а) отключить события мыши или, по крайней мере, события зависания
- (б) взломать систему визуализации, чтобы поиск целей не был O (m + n).
Простые решения для (b) в основном просто делят область просмотра на маленькие кусочки и отправляют события только тем элементам, которые находятся в том же блоке, что и указатель. (Очевидно, чем меньше вы делаете куски, тем больше памяти требуется.)
У нас были планы сделать (б) (и набросок дизайна) в течение некоторого времени, но мы работали над другими вещами. Любой, кто хочет помочь с более постоянным решением, пожалуйста, свяжитесь со мной.
Сколько памяти вы запускаете виртуальную машину? Предполагая, что вы работаете с окнами, глядя на диспетчер задач, виртуальная машина достигает максимального объема выделенной памяти и начинает использовать своп?
Проблема, вероятно, заключается в расчете позиций ваших вершин. Единственный макет, который мне показалось довольно простым для вычисления, - это макет дерева, который, очевидно, подходит не для всех наборов данных.
Решение, вероятно, состоит в том, чтобы написать свой собственный макет с гораздо меньшими вычислениями, чем, скажем, FRLayout.