Я должен визуализировать относительно большой график (6K узлы, 8K края), который имеет следующие свойства:
Позвольте глобальному краю наложиться = граничные перекрытия, вызванные путем прямой визуализации графика Кластеров = {A, B, C, D, E}, Края = {Пентаграмма тех кластеров, которая является неплоской между прочим и определенно генерирует граничное перекрытие, если Вы вытягиваете его непосредственно}
Позвольте Локальному Граничному Перекрытию =, вышеупомянутое, но {A, B, C, D, E} является просто узлами.
Я должен визуализировать графики с вышеупомянутым способом, которое удовлетворяет следующие требования
У кого-либо есть мысли о том, как лучше всего визуализировать график с требованиями выше?
Одно решение, которое я предложил для контакта с глобальным граничным перекрытием, состоит в том, чтобы удостовериться, что кластер A может только иметь макс. из 1 прямого края к другому кластеру (B) во время визуализации. Любые дополнительные межкластерные края между кластером-> C,-> D... разъединяются и дополнительный узел/края-> A_C, C-> C_A,-> A_D, D->, D_A... создаются.
У кого-либо есть какие-либо мысли?
Prefuse имеет несколько хороших алгоритмов рисования графов link text, встроенных в него, и кажется, что он относительно хорошо справляется с довольно большими графами. Вы можете попробовать Flow Map Layout, который построен поверх Prefuse.
Я не встречал слишком много инструментов визуализации графиков, которые поддерживают визуальное разделение кластеров на графике. Одним из вариантов может быть просмотр WilmaScope . Похоже, есть некоторая поддержка макетов на основе кластеров.
Учитывая ваши цели, я думаю, что алгоритм Фрухтермана-Рейнгольда делает довольно приличную работу по предотвращению перекрытия краев. Смотрите, например, этот скриншот сети, состоящей из нескольких компонентов, построенной с помощью алгоритма Фрухтермана-Рейнгольда. IGraph имеет встроенную поддержку этого алгоритма (как и Networkx, я полагаю) и работает очень быстро.
Organic layout достаточно хорошо справляется с кластеризованными графами во фреймворке yFiles. Попробуйте сначала в yEd, чтобы увидеть, делает ли он то, что нужно. Вероятно, разумно использовать вложенные группы псевдонимов графов для каждого кластера. В органической компоновке есть функция под названием Group Layout Policy, которая может быть использована, если компоновка должна быть выполнена с использованием различных принципов для межкластерных и внутрикластерных ребер, с постепенной компоновкой. Приложив некоторые усилия, можно перевести граф в GraphML, чтобы избежать ручной работы.
На основе Prefuse есть программа под названием SocialAction . Вы должны запросить код у автора, но он выполняет большой статистический анализ графика за вас, например, определяет подграфы. Я использовал его на графике с более чем 18 000 узлов, и хотя он очень медленный в таком масштабе, он все еще работает.
Хотя это может быть глупо спрашивать в данный момент, вы пробовали http://www.graphviz.org/ ?