Wie kann man das Wachstum eines sozialen Netzwerks animieren?


11

Ich suche nach einer Bibliothek / einem Tool, um zu visualisieren, wie sich das soziale Netzwerk ändert, wenn neue Knoten / Kanten hinzugefügt werden.

Eine der vorhandenen Lösungen ist SoNIA: Social Network Image Animator . Damit können Sie Filme wie diesen machen .

Die Dokumentation von SoNIA besagt, dass es momentan kaputt ist, und außerdem würde ich stattdessen eine JavaScript-basierte Lösung bevorzugen. Meine Frage lautet also: Kennen Sie Tools oder können Sie mich auf einige Bibliotheken verweisen, die diese Aufgabe so einfach wie möglich machen würden?

Gleich nach dem Posten dieser Frage werde ich mich mit sigma.js befassen . Bitte beachten Sie , dass diese Bibliothek abgedeckt ist.

Im Allgemeinen wären meine Eingabedaten ungefähr so:

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

Hier haben wir also drei Zeitpunkte (1, 2, 3), drei Knoten (A, B, C) und drei Kanten, die einen triadischen Abschluss zwischen den drei betrachteten Knoten darstellen.

Darüber hinaus hat jeder Knoten zwei Attribute (Alter und Geschlecht), sodass ich die Form / Farbe der Knoten ändern möchte.

Nach dem Hinzufügen eines neuen Knotens wäre es auch perfekt, einen ForceAtlas2- oder ähnlichen Algorithmus zu haben, um das Layout des Diagramms anzupassen.

Antworten:


11

Ausgefallene Animationen sind cool

Ich war sehr beeindruckt, als ich diese Animation des Diskurs- Git-Repository sah. Sie benutzten Gourse, das speziell für Git ist. Aber es kann Ideen geben, wie die Dynamik des Wachstums dargestellt werden kann.

Mit matplotlib können Sie Animationen erstellen

Diese Stackoverflow-Antwort scheint auf eine Python / Networkx / Matplotlib-Lösung zu verweisen.

Aber D3.js bietet Interaktion

Wenn Sie nach einer webbasierten Lösung suchen, ist d3.js hervorragend. Sehen Sie dies , dies und das zum Beispiel. Siehe auch diese Frage zum Stapelüberlauf , die akzeptierte Antwort zeigt erneut auf D3.js.

Fazit

Ich würde mich für die Python / Networkx-Optionen für die Netzwerkanalyse interessieren (möglicherweise, um beispielsweise Ihrer Rohdatendatei Attribute hinzuzufügen). Dann ist D3.js für die Visualisierung und Verbreitung perfekt. Sie werden überrascht sein, wie einfach es sein kann, d3.js zu schreiben, wenn Sie erst einmal damit fertig sind. Ich glaube, es funktioniert sogar in einem Ipython-Notebook!


Vielen Dank, ich mag diese Python / networkx / matplotlib-Lösung, da sie meine Standardarbeitsumgebung ist und es einfach ist, aus diesem Code ein GIF zu machen. Trotzdem würde etwas, das im Web besser aussieht, diese Lösung übertreffen :)
Wojciech Walczak

5

Meine erste Vermutung ist, das soziale Netzwerk in Tableau zu visualisieren .

Und insbesondere: Erstellen von Netzwerkdiagrammen in Tableau .

Sie müssen dem Abschnitt "Seiten" eine Zeitdimension hinzufügen, um die Dynamik von Netzwerkänderungen sehen zu können.

Dies ist ein Bildschirm über den obigen Link. Geben Sie hier die Bildbeschreibung ein


1
Hallo, danke für diesen Tipp, aber ich würde etwas bevorzugen, das in dynamischer Form leicht im Web veröffentlicht werden kann. Außerdem bevorzuge ich kostenlose Lösungen, während Tableau - korrigieren Sie mich, wenn ich falsch liege - nur als Testversion verfügbar ist.
Wojciech Walczak

Es hat auch die "Public" Edition, was bedeutet, dass Sie Ihre Ergebnisse im Web speichern / teilen müssen und sie nicht lokal speichern können.
IharS

2
@WojciechWalczak Vielleicht kann Gephi anstelle von Tableau verwendet werden.
Amir Ali Akbari

5

Es stellte sich heraus, dass diese Aufgabe mit vis.js recht einfach zu erledigen war . Dies war der beste Beispielcode, den ich gefunden habe.

Das Beispiel dafür, worauf ich aufgebaut habe, ist hier (scrollen Sie zum Ende dieses Beitrags). Diese Grafik zeigt das Wachstum eines Subnetzes von Facebook-Freunden. Grüne Punkte sind weiblich, blaue sind männlich. Je dunkler die Farbe, desto älter der Benutzer. Durch Klicken auf "Dodaj węzły" können Sie dem Diagramm weitere Knoten und Kanten hinzufügen.

Wie auch immer, ich bin immer noch an anderen Möglichkeiten interessiert, diese Aufgabe zu erfüllen, daher werde ich vorerst keine Antwort akzeptieren.

Vielen Dank für Ihre Beiträge!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.