Префузия: перезагрузка файлов XML - PullRequest
2 голосов
/ 07 октября 2008

Я новичок в наборе инструментов для предварительной визуализации и у меня есть пара общих вопросов. Для моей цели я хотел бы выполнить начальную визуализацию, используя prefuse (graphview / graphml). После рендеринга по щелчку пользователя на узле я хотел бы полностью перезагрузить новый XML-файл для новой визуализации. Я хочу сделать это для того, чтобы я мог «предварительно упаковать» графики для отображения.

Например. Если я ищу Теда. Я хотел бы иметь XML-файл, относящийся к загрузке Теда и визуализации дисплея. Теперь на дисплее я вижу, что у Теда есть связанные узлы, называемые Биллом и Джо. Когда я нажимаю Джо, я хочу очистить дисплей и загрузить XML-файл, связанный с Джо. И так далее.

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

Заранее спасибо за любую помощь, Джон

Ответы [ 2 ]

1 голос
/ 10 января 2010

Конечно, как вы сказали, одним из вариантов является загрузка всех узлов, а затем установка узлов, которые вам не нужны, чтобы быть невидимыми. Prefuse достаточно хорошо масштабируется, но, конечно, у него есть свои пределы. Второй вариант - просто создать новую панель и заменить старую панель. Я использовал вариант 2, и он работает довольно хорошо.

0 голосов
/ 14 ноября 2012

Я далеко не эксперт по проблемам производительности Prefuse, но я думаю, что определенно более ресурсоемко загружать огромный xml-файл за один раз, чем выполнять обработку для повторной загрузки только необходимых узлов.

Я не знаю, какой тип графика вы используете, но я бы поместил «refreshGraph», который удаляет график из объекта визуализации, отменяет Activity, отменяет Layout, обновляет ActionList и перезапускается заново. Вероятно, получилось бы что-то вроде этого:

public void refresh(clickedNode){
    visualization.removeGroup(GRAPH);
    visualization.removeGroup(AGGR);
    activity.cancel();
    actionList.cancel();
    visualization.reset();
    // process the XML and reload your graph here
}
...