Jak powstaje wykres „United States of Reddit”?

9

Poniżej znajduje się wykres z p. 202 Christiana Ruddera Dataclysm , choć został stworzony przez Jamesa Dowdella. To ilustruje relacje między różnymi 200 najpopularniejszymi subredditami, które są obszarami zainteresowania na reddit.com, gdzie użytkownicy mogą przesyłać linki, komentarze i głosy. Są one podobne do tagów na tej stronie. Rozmiar regionów subredditów reprezentuje ich popularność. Podreddity są pogrupowane według komentarzy krzyżowych, a ciemniejszy odcień reprezentuje odsetek osób, które pozostają w tym podreddycie i nie wysyłają postów do innych.

Czy to tylko standardowe partycjonowanie Voronoi, z pewnymi kolorami dla izolacji, czy jest to coś bardziej zaangażowanego?

Jak można zrobić jeden z nich?

Stany Zjednoczone Reddit

Dimitriy V. Masterov
źródło
3
Nie wiem, ale zgaduję, że jest to kartogram Voronoi - jeden dostosowuje środki punktów (nie pokazano), dopóki każdy z obszarów regionu Voronoi nie będzie proporcjonalny do określonej wartości.
whuber

Odpowiedzi:

7

Po pierwsze, jestem James Dowdell, więc jestem wyjątkowo kompetentny, aby odpowiedzieć (utworzyłem konto, aby odpowiedzieć, mogę potwierdzić tożsamość, jeśli ktoś się martwi).

Prosta odpowiedź jest rzeczywiście tym, co inni przypuszczali: jest to http://en.wikipedia.org/wiki/Voronoi_diagram . Zastosowaliśmy tę samą koncepcję na stronie 194, gdzie strony voronoi to pary długości i szerokości geograficznej wymienione przez craigslist.org.

Niestety, sama ta wiedza nie jest tak naprawdę bardzo przydatna. Dzięki wykresowi Craigslist wyraźnie widać, jakie wartości należy stosować dla witryn. Ale jakiej magicznej sztuczki użył Dataclysm do przypisania współrzędnych x / y na tym wykresie?

Odpowiedź na to pytanie jest o wiele bardziej zaangażowana niż większość ludzi by się spodziewała i nie mogę powiedzieć, że zalecam powtórzenie tego, co zrobiliśmy. Założę się, że ktoś tutaj mógłby polecić podejście, które osiąga mniej więcej ten sam wynik i jest znacznie prostsze.

Prawdą jest:

Christian i ja chodziliśmy tam iz powrotem przez ponad 3 miesiące, tworząc wykresy dla tego rozdziału, których nigdy nie moglibyśmy zrobić. Ale wyniki jednego podejścia często uwzględniały kolejne.

  1. Najważniejszą rzeczą jest niestety technika i niektóre zasoby graficzne, których nie wolno mi odkrywać ani udostępniać w żaden znaczący sposób, ponieważ nadal możemy je jakoś wykorzystać. Powiem tylko, że wzięliśmy skomplikowany http://en.wikipedia.org/wiki/Graph_theory#Graph , który skompilowaliśmy za zgodą danych Reddit, dotyczących identyfikatorów użytkowników i subredditów, i bawiliśmy się tym grafem i różnymi pochodnymi tego wewnątrz http://gephi.github.io/(W dzisiejszych czasach jestem szczególnie fanem „OpenOrd”). W rzeczywistości otrzymaliśmy wspaniały obraz - byłby punktem kulminacyjnym książki, gdyby został opublikowany - ale chociaż działałby dobrze na stronie internetowej, nie drukowałby dobrze w książce - za mało miejsca lub rozdzielczości. Christian początkowo rozważał ustawienie go jako rozkładanego w książce, ale dla Crown nie było to opłacalne.

  2. Jednak w tym momencie mieliśmy obraz, który miał współrzędne x / y dla podreddits i były one przynajmniej względnie odpowiednio rozmieszczone w przestrzeni x / y. Spieszyło nam się również, ponieważ zbliżał się termin publikacji. Najpierw jestem programistą, a po drugie facetem danych, więc aby dostosować się do bardzo ciasnych granic strony w książce i czasu pozostałego na zegarze, instynktownie napisałem program w Box2D, który symulował granice strony jako ściany, włóż do środka niezwykle skurczoną wersję wykresu i symuluj powiększanie tych węzłów (nawiasem mówiąc, nie jest to naturalne dla Box2D, oczekuje sztywnych ciał, które się nie zmieniają), dopóki wszystko nie zrówna się ze ścianami i ze sobą. Węzły rosły w tempie proporcjonalnym do wielkości reprezentowanego przez nich subreddita, co oznaczało, że ostateczne rozmiary będą również proporcjonalne w ten sam sposób.zrzut ekranu programu box2d podczas działania

  3. Rezultat tego wcale nie wyglądał zbyt ładnie, ale dał mi coś bardzo cennego: strony voronoi. Wziąłem centroidy powstałych wielokątów box2d, poddałem je standardowemu procesowi i tego właśnie użyłem na wykresie w książce. Wierzę, że etykiety tekstowe były nakładane ręcznie w Photoshopie.

Nawiasem mówiąc, zabarwienie komórek było powiązane ze statystyką, którą opracowaliśmy, aby utworzyć wykres z powrotem w (A)

jdowdell
źródło
1
Witamy na stronie. Jest to bliskie temu, jak mogłem to zrobić. Użyj dowolnego układu wykresu, aby przypisać współrzędne xy do węzłów. (Może być możliwe, aby w niektórych układach opartych na sile komórki były w przybliżeniu wielkości, które chcesz, w oparciu o określenie grubości krawędzi i masy, ale wątpię, aby były dokładne.) Po utworzeniu obszarów voronoi oryginalnego układu wykresu, to zrobiłbym użyj narzędzia kartogramu, takiego jak Scapetoad , aby uczynić obszary końcowe proporcjonalnymi do statystyk będących przedmiotem zainteresowania. To ostatecznie przypomina program, który sugerujesz w box2d.
Andy W
0

Wygląda bardziej jak problem z chmurą słów z wyglądem wielokąta Voronoi. Aby określić lokalizację, musisz użyć słowa częstotliwość (wysoka częstotliwość oznacza środek). Tak długo, jak określa się położenie słów, rysowanie wielokąta Voronoi nie powinno być wielkim problemem.

Xiaoyue
źródło