Jak ożywić rozwój sieci społecznościowej?

12

Szukam biblioteki / narzędzia do wizualizacji zmian w sieci społecznościowej po dodaniu do niej nowych węzłów / krawędzi.

Jednym z istniejących rozwiązań jest SoNIA: Social Network Image Animator . Pozwala ci robić filmy takie jak ten .

Dokumentacja SoNIA mówi, że obecnie jest zepsuta, a poza tym wolałbym zamiast tego rozwiązanie oparte na JavaScript. Moje pytanie brzmi: czy znasz jakieś narzędzia, czy jesteś w stanie wskazać mi biblioteki, które ułatwiłyby to zadanie?

Zaraz po opublikowaniu tego pytania zagłębię się w sigma.js , więc rozważ tę bibliotekę.

Ogólnie moje dane wejściowe byłyby mniej więcej takie:

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

Mamy więc trzy punkty w czasie (1, 2, 3), trzy węzły (A, B, C) i trzy krawędzie, które reprezentują triadowe zamknięcie między trzema rozważanymi węzłami.

Co więcej, każdy węzeł będzie miał dwa atrybuty (wiek i płeć), dlatego chciałbym mieć możliwość zmiany kształtu / koloru węzłów.

Ponadto po dodaniu nowego węzła idealnie byłoby mieć ForceAtlas2 lub podobny algorytm do dostosowania układu wykresu.

Wojciech Walczak
źródło

Odpowiedzi:

12

Fantazyjne animacje są fajne

Byłem pod wrażeniem, gdy zobaczyłem tę animację z dyskursu repozytorium git. Użyli Gourse, która jest specjalnie dla git. Ale może dać pomysły, jak przedstawić dynamikę wzrostu.

Możesz tworzyć animacje za pomocą matplotlib

Ta odpowiedź na przepełnienie stosu wydaje się wskazywać na rozwiązanie python / networkx / matplotlib.

Ale D3.js zapewnia interakcję

Jeśli szukasz rozwiązania internetowego, to d3.js jest doskonały. Zobacz to , to i to na przykład. Zobacz także to pytanie dotyczące przepływu stosu, zaakceptowana odpowiedź ponownie wskazuje D3.js.

Wniosek

Byłbym pociągnięty w kierunku opcji python / networkx do analizy sieci (ewentualnie, aby na przykład dodać atrybuty do pliku surowych danych). Następnie do wizualizacji i rozpowszechniania D3.js jest idealny. Możesz być zaskoczony, jak łatwo można napisać d3.js, kiedy się w to zagłębisz. Wierzę, że działa nawet w notebooku ipython!

Graeme Stuart
źródło
Dzięki, podoba mi się to rozwiązanie Python / networkx / matplotlib, ponieważ jest to moje domyślne środowisko pracy i łatwo jest zrobić z tego kodu gif. Jednak coś, co wygląda lepiej w sieci, pokonałoby to rozwiązanie :)
Wojciech Walczak
6

Moim pierwszym przypuszczeniem jest wizualizacja sieci społecznościowej w Tableau .

A w szczególności: budowanie wykresów sieciowych w Tableau .

Aby dodać dynamikę zmian w sieci, musisz dodać wymiar czasowy do sekcji „Strony”.

To jest ekran z linku powyżej. wprowadź opis zdjęcia tutaj

IharS
źródło
1
Cześć, dziękuję za tę wskazówkę, ale wolałbym coś, co można łatwo opublikować w Internecie w formie dynamicznej. Wolę też bezpłatne rozwiązania, a Tableau - popraw mnie, jeśli się mylę - jest dostępna tylko w wersji próbnej.
Wojciech Walczak
Ma również wersję „Publiczną”, co oznacza, że ​​musisz przechowywać / udostępniać swoje wyniki w sieci i nie możesz zapisać ich lokalnie.
IharS
2
@WojciechWalczak Może zamiast Tableau można użyć gephi .
Amir Ali Akbari
6

Okazało się, że to zadanie było dość łatwe do osiągnięcia przy użyciu vis.js . To był najlepszy przykładowy kod, jaki znalazłem.

Przykład tego, co na tym zbudowałem, znajduje się tutaj (przewiń na dół tego postu). Ten wykres przedstawia wzrost podsieci znajomych z Facebooka. Zielone kropki to kobiety, niebieskie to mężczyźni. Im ciemniejszy kolor, tym starszy użytkownik. Klikając „Dodaj węzły” możesz dodać więcej węzłów i krawędzi do wykresu.

W każdym razie nadal interesują mnie inne sposoby wykonania tego zadania, więc na razie nie przyjmę żadnej odpowiedzi.

Dziękujemy za Twój wkład!

Wojciech Walczak
źródło
twoje linki są zepsute
user1870400