Кластеризованные методы визуализации графиков

Я должен визуализировать относительно большой график (6K узлы, 8K края), который имеет следующие свойства:

  • Отличные Кластеры. Приблизительно 50-100 Узлов на кластер и умеренную взаимосвязанность на кластерном уровне
  • Минимальный (5-10 межкластерных краев на кластер) взаимосвязанность между кластерами

Позвольте глобальному краю наложиться = граничные перекрытия, вызванные путем прямой визуализации графика Кластеров = {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... создаются.

У кого-либо есть какие-либо мысли?

10
задан TylerH 12 September 2019 в 20:17
поделиться

6 ответов

Prefuse имеет несколько хороших алгоритмов рисования графов link text, встроенных в него, и кажется, что он относительно хорошо справляется с довольно большими графами. Вы можете попробовать Flow Map Layout, который построен поверх Prefuse.

1
ответ дан 4 December 2019 в 04:01
поделиться

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

0
ответ дан 4 December 2019 в 04:01
поделиться

Учитывая ваши цели, я думаю, что алгоритм Фрухтермана-Рейнгольда делает довольно приличную работу по предотвращению перекрытия краев. Смотрите, например, этот скриншот сети, состоящей из нескольких компонентов, построенной с помощью алгоритма Фрухтермана-Рейнгольда. IGraph имеет встроенную поддержку этого алгоритма (как и Networkx, я полагаю) и работает очень быстро.

1
ответ дан 4 December 2019 в 04:01
поделиться

Organic layout достаточно хорошо справляется с кластеризованными графами во фреймворке yFiles. Попробуйте сначала в yEd, чтобы увидеть, делает ли он то, что нужно. Вероятно, разумно использовать вложенные группы псевдонимов графов для каждого кластера. В органической компоновке есть функция под названием Group Layout Policy, которая может быть использована, если компоновка должна быть выполнена с использованием различных принципов для межкластерных и внутрикластерных ребер, с постепенной компоновкой. Приложив некоторые усилия, можно перевести граф в GraphML, чтобы избежать ручной работы.

0
ответ дан 4 December 2019 в 04:01
поделиться

На основе Prefuse есть программа под названием SocialAction . Вы должны запросить код у автора, но он выполняет большой статистический анализ графика за вас, например, определяет подграфы. Я использовал его на графике с более чем 18 000 узлов, и хотя он очень медленный в таком масштабе, он все еще работает.

1
ответ дан 4 December 2019 в 04:01
поделиться

Хотя это может быть глупо спрашивать в данный момент, вы пробовали http://www.graphviz.org/ ?

1
ответ дан 4 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: