Как оживить рост социальной сети?

12

Я ищу библиотеку / инструмент для визуализации того, как меняется социальная сеть, когда к ней добавляются новые узлы / ребра.

Одним из существующих решений является SoNIA: аниматор социальных сетей . Это позволяет вам делать фильмы, как этот .

Документация SoNIA гласит, что в данный момент она не работает, и помимо этого я бы предпочел решение на основе JavaScript. Итак, мой вопрос: знакомы ли вы с какими-либо инструментами или вы можете указать мне на некоторые библиотеки, которые облегчили бы эту задачу?

Сразу после публикации этого вопроса я покопаюсь в sigma.js , поэтому, пожалуйста, рассмотрите эту библиотеку.

В общем, мои входные данные будут примерно такими:

time_elapsed; node1; node2
1; A; B
2; A; C
3; B; C

Итак, у нас есть три момента времени (1, 2, 3), три узла (A, B, C) и три ребра, которые представляют триадическое замыкание между тремя рассматриваемыми узлами.

Более того, каждый узел будет иметь два атрибута (возраст и пол), поэтому я хотел бы иметь возможность изменять форму / цвет узлов.

Кроме того, после добавления нового узла было бы идеально иметь некоторый ForceAtlas2 или аналогичный алгоритм для настройки макета графика.

Войцех Валчак
источник

Ответы:

12

Необычные анимации это круто

Я был очень впечатлен , когда я увидел эту анимацию в дискурсе репозитория. Они использовали Gourse, который специально для мерзавца. Но это может дать представление о том, как представить динамику роста.

Вы можете создать анимацию с Matplotlib

Похоже, этот ответ на стекопоток указывает на решение python / networkx / matplotlib.

Но D3.js обеспечивает взаимодействие

Если вы ищете веб-решение, то d3.js отлично. Смотрите это , это и это , например. Смотрите также этот StackOverflow вопрос , Принятые очки ответа на D3.js снова.

Вывод

Я хотел бы обратить внимание на опции python / networkx для сетевого анализа (возможно, для добавления атрибутов в ваш файл необработанных данных, например). Тогда для визуализации и распространения D3.js идеально подходит. Вы можете быть удивлены, насколько легко можно написать d3.js, как только вы в нее попадете. Я верю, что это работает даже в ноутбуке ipython!

Грэм Стюарт
источник
Спасибо, как этот раствор / NetworkX / Matplotlib Python , так как это мое по умолчанию рабочего среды, и это легко сделать GIF из этого кода. Тем не менее, то , что выглядит лучше на веб - сайте будет бить это решение :)
Войцех Walczak
6

Мое первое предположение - визуализация социальной сети в Таблице .

И особенно: построение сетевых графиков в Таблице .

Вам нужно добавить измерение времени в раздел «Страницы», чтобы увидеть динамику изменений в сети.

Это экран по ссылке выше. введите описание изображения здесь

IharS
источник
1
Привет, спасибо за этот совет, но я бы предпочел что-то, что легко публикуется в Интернете в динамической форме. Кроме того, я предпочитаю бесплатные решения, в то время как Tableau - поправьте меня, если я ошибаюсь - доступна только в качестве пробной версии.
Войцех Валчак
Он также имеет «Публичную» версию, что означает, что вы должны хранить / делиться своими результатами в Интернете и не можете сохранить их локально.
IharS
2
@WojciechWalczak Может быть, Gephi можно использовать вместо Tableau.
Амир Али Акбари
6

Оказалось, что эта задача была довольно легко выполнить с помощью vis.js . Это был лучший пример кода, который я нашел.

Пример того, что я построил на этом, приведен здесь (прокрутите до конца этого поста). Этот график представляет рост подсети друзей в Facebook. Зеленые точки - женщины, синие - мужчины. Чем темнее цвет, тем старше пользователь. Нажав «Dodaj węzły», вы можете добавить больше узлов и ребер на график.

В любом случае, я все еще заинтересован в других способах решения этой задачи, поэтому пока не буду принимать никакого ответа.

Спасибо за ваш вклад!

Войцех Валчак
источник
Ваши ссылки не работают
user1870400