Я работаю над алгоритмами обнаружения сообщества, и в настоящее время я пытаюсь визуализировать результаты алгоритма Лувена (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](https://i.stack.imgur.com/cAATa.png)
ПРМФ
![sfdp](https://i.stack.imgur.com/gEOLS.png)
Я что-то упустил? Как я могу выделить различия между сообществами, как показано в приведенной выше ссылке?