Создание очень больших ребер и вершинных графов в C # - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь наметить социальные сети

Например, у меня есть человек А, и у него есть 5 последователей, эти подписчики и человек будут представлены вершиной, а затем будут иметь ребро, соединяющее их. И, скорее всего, по крайней мере половина из них следуют друг за другом, создавая своего рода «сеть».

Я пытался сделать это в QuickGraph, однако я столкнулся с несколькими проблемами:

  1. График в конечном итоге выглядит скорее как блок-схема, а не как веб, пример из более раннего в QuickGraph:

enter image description here

  1. Когда я тестирую с реальными данными, график просто становится огромным, медленным, спагетти-хаосом чернил

Каков наилучший способ создания такого рода графиков?

Для справки я ищу график, который выглядит следующим образом:

enter image description here

1 Ответ

1 голос
/ 16 марта 2019

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

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

На самом деле этого нет, и ваш пример изображения более типичен для ненаправленного графика. Те же самые люди, которые делают dot, также делают neato , что дает вам диаграммы гораздо ближе к желаемой картине.

Я совсем не знаю API QuickGraph, но я бы тоже посмотрел;

  • измените структуру данных графика, которую вы создаете - попробуйте переключиться на что-то вроде UndirectedGraph и посмотрите, закончится ли это переключением рендера
  • посмотрите, есть ли в вашем методе рендеринга опции для рендеринга неориентированного графа, а не ориентированного графа.
...