Визуализация форсированного большого графа: python и graphviz - PullRequest
0 голосов
/ 07 сентября 2018

Я работаю над алгоритмами обнаружения сообщества, и в настоящее время я пытаюсь визуализировать результаты алгоритма Лувена (https://arxiv.org/abs/0803.0476) на графике из 70 тыс. Узлов и 8 млн. Ребер.

Ранее я строил график меньшего размера (узлы 20K, ребра 650K) с igraph, черпая вдохновение из Как построить график на основе сообщества с помощью igraph для python , и это заняло почти 30 минут. Построение 70К узлов и 8М ребер занимает 8 часов.

Чтобы построить текущий график из-за производительности, я перешел на sfdp (например, sfdp foo.dot -Goutputorder="edgesfirst" -Goverlap=false -Tpdf -O). Тем не менее, я не могу добиться хорошего макета, чтобы выделить отдельные сообщества, отделив их от других. Я попытался настроить как K на уровне графа, так и len и / или weight на уровне ребер (установив высокие значения для ребер внутри сообщества, например, 1000; и низкие значения для ребер внутри сообщества, например, 1). sfdp, кажется, игнорирует вес. Тем не менее, как расширение fdp, оно не должно.

Примеры на небольшом графике

igraph + fruchterman_reingold макет igraph + fruchterman_reingold layout

ПРМФ

sfdp

Я что-то упустил? Как я могу выделить различия между сообществами, как показано в приведенной выше ссылке?

...