Wie wird dieses Diagramm "Vereinigte Staaten von Reddit" erstellt?

9

Unten ist eine Grafik von p. 202 von Christian Rudder's Dataclysm , obwohl es von James Dowdell gemacht wurde. Es zeigt die Beziehungen zwischen verschiedenen Top-200-Subreddits, die auf reddit.com von Interesse sind und in denen Benutzer Links, Kommentare und Abstimmungen einreichen können. Diese ähneln den Tags auf dieser Site. Die Größe der Subreddit-Regionen repräsentiert ihre Beliebtheit. Die Subreddits werden durch Kreuzkommentare gruppiert, und der dunklere Farbton gibt den Prozentsatz der Personen an, die innerhalb dieses Subreddits bleiben und nicht an andere posten.

Ist dies nur eine Standard-Voronoi-Partitionierung mit einigen Farben für Insularität, oder handelt es sich um etwas mehr?

Wie könnte man vorgehen, um eines davon zu machen?

Vereinigte Staaten von Reddit

Dimitriy V. Masterov
quelle
3
Ich weiß es nicht, aber ich vermute, dass es sich um ein Voronoi-Kartogramm handelt. Mit einem Punkt werden die Punktmittelpunkte (nicht gezeigt) angepasst, bis jeder Bereich der Voronoi-Region proportional zu einem vorgegebenen Wert ist.
whuber

Antworten:

7

Erstens bin ich James Dowdell, daher bin ich für die Beantwortung ziemlich einzigartig qualifiziert (habe ein Konto zur Beantwortung erstellt und kann die Identität bestätigen, wenn jemand besorgt ist).

Die einfache Antwort ist in der Tat das, was andere vermutet haben: Dies ist ein http://en.wikipedia.org/wiki/Voronoi_diagram . Wir haben das gleiche Konzept auf Seite 194 verwendet, wo die Voronoi-Standorte dort die von craigslist.org aufgelisteten Längen- und Breitengradpaare sind.

Leider ist dieses Wissen selbst nicht sehr nützlich. Mit dem Craigslist-Diagramm wird klar, welche Werte für die Websites verwendet werden sollen. Aber welchen Zaubertrick hat Dataclysm verwendet, um x / y-Koordinaten in diesem Diagramm zuzuweisen?

Die Antwort darauf ist weitaus komplizierter als die meisten Leute erwarten würden, und ich kann nicht sagen, dass ich empfehle, das, was wir getan haben, zu wiederholen. Ich wette, jemand anderes hier könnte einen Ansatz empfehlen, der mehr oder weniger das gleiche Ergebnis erzielt und viel einfacher ist.

Die Wahrheit ist:

Christian und ich gingen über 3 Monate lang hin und her und erstellten Grafiken für dieses Kapitel, die wir niemals zum Laufen bringen konnten. Die Ergebnisse eines Ansatzes flossen jedoch häufig in den nächsten ein.

  1. Das Kritischste ist leider eine Technik und einige Bildelemente, die ich nicht erforschen oder auf sinnvolle Weise teilen kann, da wir sie möglicherweise noch irgendwie verwenden. Was ich sagen werde ist, dass wir ein kompliziertes http://en.wikipedia.org/wiki/Graph_theory#Graph genommen haben , das wir mit Genehmigung von Reddits Daten zusammengestellt haben, wobei Benutzer-IDs und Subreddits beteiligt waren, und mit diesem Diagramm und verschiedenen Derivaten herumgespielt haben davon in http://gephi.github.io/(Ich bin heutzutage besonders ein Fan von "OpenOrd"). Tatsächlich haben wir ein großartiges Bild erhalten - wäre der Höhepunkt des Buches gewesen, wenn es veröffentlicht worden wäre -, aber obwohl es auf einer Website gut funktioniert hätte, würde es in einem Buch nicht gut gedruckt - nicht genug Platz oder Auflösung. Christian hatte ursprünglich überlegt, es als Ausklappung in das Buch aufzunehmen, aber es war für Crown einfach nicht kosteneffektiv.

  2. Zu diesem Zeitpunkt hatten wir jedoch ein Bild mit x / y-Koordinaten für die Subreddits und sie waren zumindest im x / y-Raum relativ relativ richtig angeordnet. Wir hatten es auch eilig, weil sich die Veröffentlichungsfrist näherte. Ich bin zuerst ein Programmierer und dann ein Daten-Typ. Um den extrem engen Grenzen der Seite im Buch und der verbleibenden Zeit auf der Uhr Rechnung zu tragen, war mein Instinkt, ein Programm in Box2D zu schreiben, das die Grenzen der Seite als simuliert Wände, setzen Sie eine extrem verkleinerte Version des Diagramms ein und simulieren Sie das Wachsen dieser Knoten (für Box2D übrigens nicht natürlich, es werden starre Körper erwartet, die sich nicht ändern), bis alles bündig mit den Wänden und untereinander war. Die Knoten wuchsen proportional zur Größe des von ihnen dargestellten Subreddits, was bedeutete, dass die endgültigen Größen in gleicher Weise auch proportional wären.Screenshot des Programms box2d während der Ausführung

  3. Das Ergebnis sah überhaupt nicht gut aus, aber es gab mir etwas sehr Wertvolles: die Voronoi-Sites. Ich habe die Schwerpunkte der resultierenden box2d-Polygone genommen, sie einem Standardprozess unterzogen, und genau das wurde für das Diagramm im Buch verwendet. Ich glaube, Textbeschriftungen wurden in Photoshop von Hand angebracht.

Im Übrigen hing die Zellfärbung mit einer Statistik zusammen, die wir entwickelt hatten, um den Graphen in (A) zu bilden.

jdowdell
quelle
1
Willkommen auf der Website. Dies ist ungefähr so, wie ich es versucht haben könnte. Verwenden Sie ein beliebiges Diagrammlayout, um den Knoten xy-Koordinaten zuzuweisen. (In einigen kraftbasierten Layouts kann es möglich sein, die Zellen basierend auf der Angabe von Kantengewichten und -masse ungefähr auf die gewünschte Größe zu bringen, aber ich bezweifle, dass sie genau sind.) Nachdem ich die Voronoi-Bereiche des ursprünglichen Diagrammlayouts erstellt habe, würde ich dies tun Verwenden Sie ein Kartogramm-Tool wie Scapetoad , um die Endbereiche proportional zur interessierenden Statistik zu machen. Dies ist dem Programm, das Sie in box2d vorschlagen, ziemlich ähnlich.
Andy W
0

Es sieht eher aus wie ein Wortwolkenproblem mit einem Voronoi-Polygon. Sie müssen das Wort Frequenz verwenden, um den Ort zu bestimmen (Hochfrequenz bedeutet Zentrum). Solange die Position der Wörter bestimmt ist, sollte das Zeichnen des Voronoi-Polygons keine große Sache sein.

Xiaoyue
quelle