Визуализация графа с миллионом вершин

17

Какой лучший инструмент для визуализации (рисования вершин и ребер) графа с 1000000 вершинами? На графике около 50000 ребер. И я могу вычислить расположение отдельных вершин и ребер.

Я думаю о написании программы для генерации SVG. Любые другие предложения?

Cici
источник
вы можете попробовать Graphviz ... не уверен, что он масштабируется до миллионов вершин ....
Debasis
Надеюсь , ответ на этот вопрос может касаться как были сделаны графики , подобные этим: medium.com/i-data/...
shadowtalker
Здравствуйте @Cici, обычно вопросы о рекомендуемых инструментах не рекомендуется на этом и других сайтах SE, так как они просто вызывают много мнений.
Шон Оуэн,

Ответы:

19

Я также предлагаю Gephiпрограммное обеспечение ( https://gephi.github.io ), которое кажется довольно мощным. Некоторая дополнительная информация об использовании Gephiс большими сетями , можно найти здесь и, в более общем плане , здесь . Cytoscape( http://www.cytoscape.org ) является альтернативой Gephi, будучи еще одной популярной платформой для комплексного сетевого анализа и визуализации.

Если вы хотите работать с сетями программно (включая визуализацию) в R, Python или C / C ++, вы можете проверить igraphколлекцию библиотек. Говоря о R, вы можете найти интересные посты в блоге: об использовании R с Cytoscape ( http://www.vesnam.com/Rblog/viznets1 ) и об использовании R с Gephi ( http://www.vesnam.com/ Rblog / viznets2 ).

Для обширных списков из анализа сети и программного обеспечения визуализации , включая некоторые сравнения и отзывы, вы можете проверить следующие страницы: 1) http://wiki.cytoscape.org/Network_analysis_links ; 2) http://www.kdnuggets.com/software/social-network-analysis.html ; 3) http://www.activatenetworks.net/social-network-analysis-sna-software-review .

Александр Блех
источник
8

https://gephi.github.io/ говорит, что может обрабатывать миллион ребер. Если у вашего графа 1000000 вершин и только 50000 ребер, то у большинства ваших вершин все равно не будет ребер.

На самом деле, спецификация Gephi является двойственной из вашего примера: «Сети до 50 000 узлов и 1 000 000 ребер»

Spacedman
источник
8

Я думаю, что это Gephiможет столкнуться с проблемами нехватки памяти, вам потребуется как минимум 8 ГБ оперативной памяти. Хотя количество ребер не очень велико.

Возможно, более подходящим инструментом в этом случае будет GraphViz. Это инструмент командной строки для сетевых визуализаций, и, вероятно, он будет более терпимым к размеру графика. Более того, насколько я помню, в GraphVizнем можно использовать предварительно вычисленные координаты для облегчения вычислений.

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

sobach
источник
4

Отчитываясь: я закончил программировать graphml и использовать yEd для визуализации (просто потому, что я знаком с этой комбинацией. Бьюсь об заклад, gephi или graphviz будут работать нормально и, возможно, даже лучше). Поскольку я вычислил расположение всех узлов, память не была такой большой проблемой. Кодирование graphml немного проще по сравнению с кодированием svg, поскольку мне не нужно явно указывать расположение ребер.

Cici
источник
2

PajekXXL предназначен для работы с огромными сетями. Но Pajek - это своего рода странная программа с неинтуитивным интерфейсом.

shadowtalker
источник
2

Я бы порекомендовал использовать Graphexp. Gephi сильно зависит от оперативной памяти вашего компьютера, которая явно ограничена. Graphexp, с другой стороны, отображает только ограниченное количество узлов, с помощью которых вы можете перемещаться к другим узлам. Я визуализировал график с 700 миллионами вершин, используя Graphexp в качестве пользовательского интерфейса и Janusgraph с HBase в качестве внутреннего хранилища. https://github.com/bricaud/graphexp

Сандип Кумар
источник
В самом деле? для меня это начинает задыхаться при попытке показать более 100 вершин
BrDaHa
Скорость зависит в основном от внутренней базы данных и вычислительной мощности. Graphexp - это только пользовательский интерфейс.
Сандип Кумар
Я понимаю это, но под «дроссельной катушкой» я подразумеваю частоту обновления до 1-2 кадров в секунду при анимации узлов, появляющихся на экране. Это может помочь отметить, что это на недавней версии Safari
BrDaHa
0

Посмотрите на Graphistry , они могут обрабатывать 1Mil узлы и ребра.

Скотт
источник
Да, Graphistry - это единственный интерактивный визуальный инструмент для больших графиков, потому что он работает на GPU для вас.
Лев Мейерович