¿Cómo se crea este gráfico de "Estados Unidos de Reddit"?

9

A continuación se muestra un gráfico de p. 202 del Dataclysm de Christian Rudder , aunque fue realizado por James Dowdell. Ilustra las relaciones entre varios 200 subreddits principales, que son áreas de interés en reddit.com donde los usuarios pueden enviar enlaces, comentarios y votos. Estos son similares a las etiquetas en este sitio. El tamaño de las regiones subreddit representa su popularidad. Los subreddits se agrupan mediante comentarios cruzados, y el tinte más oscuro representa el porcentaje de personas que permanecen dentro de ese subreddit y no publican en otros.

¿Es solo una partición estándar de Voronoi, con algo de color para la insularidad, o es algo más complicado?

¿Cómo podría uno hacer uno de estos?

Estados Unidos de Reddit

Dimitriy V. Masterov
fuente
3
No lo sé, pero supongo que es un cartograma de Voronoi: uno ajusta los centros de puntos (no se muestran) hasta que cada una de las áreas de la región de Voronoi sea proporcional a un valor predeterminado.
whuber

Respuestas:

7

Primero, soy James Dowdell, por lo que estoy bastante calificado para responder (creé una cuenta para responder, puedo confirmar la identidad si alguien está preocupado).

La respuesta simple es de hecho lo que otros han supuesto: este es un http://en.wikipedia.org/wiki/Voronoi_diagram . Utilizamos el mismo concepto en la página 194, donde los sitios de voronoi son los pares de latitud y longitud listados por craigslist.org.

Desafortunadamente, este conocimiento en sí no es realmente muy útil. Con el gráfico Craigslist, queda claro qué valores usar para los sitios. Pero, ¿qué truco de magia usó Dataclysm para asignar coordenadas x / y en este gráfico?

La respuesta a eso es mucho más complicada de lo que la mayoría de la gente esperaría, y no puedo decir que recomiendo rehacer lo que hicimos. Apuesto a que alguien más aquí podría recomendar un enfoque que obtenga más o menos el mismo resultado y sea mucho más simple.

La verdad es:

Christian y yo estuvimos yendo y viniendo durante más de 3 meses creando gráficos para este capítulo, que nunca podríamos hacer funcionar. Pero, los resultados de un enfoque a menudo se incorporaron al siguiente.

  1. Lamentablemente, lo más crítico implica una técnica y algunos recursos de imagen que no tengo libertad para explorar o compartir de manera significativa, porque todavía podemos usarlos de alguna manera. Lo que diré es que tomamos una http://en.wikipedia.org/wiki/Graph_theory#Graph complicada que compilamos con permiso de los datos de Reddit, que involucran ID de usuario y subreddits, y jugamos con este gráfico y varios derivados dentro de http://gephi.github.io/(Soy particularmente fanático de "OpenOrd" en estos días). De hecho, obtuvimos una imagen magnífica, habría sido lo más destacado del libro si se hubiera publicado, pero si bien hubiera funcionado bien en un sitio web, no se imprimió bien en un libro, no hay suficiente espacio o resolución. Originalmente, Christian estaba considerando configurarlo como un pliegue en el libro, pero simplemente no era rentable para Crown.

  2. Sin embargo, en este punto teníamos una imagen que tenía coordenadas x / y para los subreddits y al menos estaban relativamente organizados adecuadamente en el espacio x / y. También teníamos prisa porque se acercaba la fecha límite de publicación. Soy un programador primero y un tipo de datos en segundo lugar, así que para acomodar los límites extremadamente estrechos de la página en el libro y el tiempo restante en el reloj, mi instinto fue escribir un programa en Box2D que simulara los límites de la página como paredes, coloque una versión extremadamente reducida del gráfico en el interior, y simuló el crecimiento de esos nodos (por cierto, no es natural para Box2D, espera cuerpos rígidos que no cambien) hasta que todo esté al ras contra las paredes y entre sí. Los nodos crecieron a una tasa proporcional al tamaño del subreddit que representaban, lo que significaba que los tamaños finales también serían proporcionales de la misma manera.captura de pantalla del programa box2d mientras se ejecuta

  3. El resultado de eso no se veía muy bien, pero me dio algo muy valioso: los sitios de voronoi. Tomé los centroides de los polígonos box2d resultantes, los sometí a un proceso estándar, y eso fue lo que se usó para el gráfico en el libro. Las etiquetas de texto se aplicaron a mano en Photoshop, creo.

Por cierto, el color de la celda estaba relacionado con una estadística que habíamos desarrollado para formar el gráfico nuevamente en (A)

jdowdell
fuente
1
Bienvenido al sitio. Esto está cerca de cómo podría haber intentado hacerlo. Use cualquier diseño de gráfico para asignar coordenadas xy a los nodos. (Puede ser posible en algunos diseños basados ​​en la fuerza hacer que las celdas tengan aproximadamente el tamaño que desea según la especificación de los pesos y la masa de los bordes, pero dudo que sean exactas). Después de crear las áreas de voronoi del diseño gráfico original, entonces lo haría use una herramienta de cartograma, como Scapetoad , para hacer que las áreas finales sean proporcionales a la estadística de interés. Esto termina siendo bastante similar al programa que sugieres en box2d.
Andy W
0

Se parece más a un problema de nube de palabras con una apariencia de polígono Voronoi. Debe usar la palabra frecuencia para decidir la ubicación (alta frecuencia significa centro). Mientras se determine la ubicación de las palabras, dibujar el polígono Voronoi no debería ser un gran problema.

Xiaoyue
fuente