Como é criado este gráfico "Estados Unidos do Reddit"?

9

Abaixo está um gráfico da p. 202 do Dataclysm de Christian Rudder , embora tenha sido produzido por James Dowdell. Ele ilustra os relacionamentos entre os 200 principais subreddits, áreas de interesse no reddit.com, onde os usuários podem enviar links, comentários e votos. São semelhantes às tags deste site. O tamanho das regiões do subreddit representa sua popularidade. Os subreddits são agrupados por comentários cruzados, e a tonalidade mais escura representa a porcentagem de pessoas que permanecem nesse subreddit e não postam em outras pessoas.

É apenas uma partição Voronoi padrão, com algumas cores para insularidade, ou é algo mais envolvido?

Como alguém pode fazer um desses?

Estados Unidos do Reddit

Dimitriy V. Masterov
fonte
3
Não sei, mas meu palpite é que é um cartograma de Voronoi - alguém ajusta os centros dos pontos (não mostrados) até que cada uma das áreas da região de Voronoi seja proporcional a um valor predeterminado.
whuber

Respostas:

7

Primeiro, sou James Dowdell, por isso estou qualificado de maneira única para responder (criei uma conta para responder, posso confirmar a identidade se alguém estiver preocupado).

A resposta simples é de fato o que outros supuseram: este é um http://en.wikipedia.org/wiki/Voronoi_diagram . Usamos o mesmo conceito na página 194, onde os sites voronoi existem os pares de latitude e longitude listados pelo craigslist.org.

Infelizmente, esse conhecimento em si não é realmente muito útil. Com o gráfico do Craigslist, fica claro quais valores usar para os sites. Mas que truque de mágica o Dataclysm usou para atribuir coordenadas x / y neste gráfico?

A resposta para isso é muito mais envolvente do que a maioria das pessoas esperaria, e não posso dizer que recomendo refazer o que fizemos. Aposto que alguém aqui poderia recomendar uma abordagem que obtém mais ou menos o mesmo resultado e é muito mais simples.

A verdade é:

Christian e eu fomos e voltamos por mais de três meses criando gráficos para este capítulo, que nunca poderíamos dar certo. Porém, os resultados de uma abordagem geralmente são alimentados na seguinte.

  1. Infelizmente, a coisa mais crítica envolve uma técnica e alguns recursos de imagem que não tenho a liberdade de explorar ou compartilhar de maneira significativa, porque ainda podemos usá-los de alguma forma. O que direi é que usamos um http://en.wikipedia.org/wiki/Graph_theory#Graph complicado que compilamos com permissão dos dados do Reddit, envolvendo userids e subreddits, e brincamos com esse gráfico e vários derivados dentro dele http://gephi.github.io/(Eu sou particularmente fã do "OpenOrd" hoje em dia). De fato, obtivemos uma imagem magnífica - teria sido o destaque do livro se tivesse sido publicado - mas, embora tivesse funcionado bem em um site, não foi impresso bem em um livro - não havia espaço ou resolução suficientes. Christian estava inicialmente pensando em defini-lo como uma dobra no livro, mas simplesmente não era rentável para Crown.

  2. No entanto, nesse ponto, tínhamos uma imagem que tinha coordenadas x / y para os subreddits e elas estavam pelo menos relativamente organizadas adequadamente no espaço x / y. Também estávamos com pressa porque o prazo de publicação estava chegando. Sou primeiro um programador e um cara de dados, então, para acomodar os limites extremamente apertados da página no livro e o tempo restante no relógio, meu instinto foi escrever um programa no Box2D que simulasse os limites da página como paredes, coloque uma versão extremamente reduzida do gráfico dentro e simule o crescimento desses nós (não é natural para o Box2D, a propósito, espera corpos rígidos que não mudam) até que tudo fique encostado nas paredes e um no outro. Os nós cresceram a uma taxa proporcional ao tamanho do subreddit que representavam, o que significava que os tamanhos finais também seriam proporcionais da mesma maneira.captura de tela do programa box2d durante a execução

  3. O resultado disso não pareceu muito bom, mas me deu algo muito valioso: os sites voronoi. Peguei os centróides dos polígonos box2d resultantes, os coloquei em um processo padrão, e foi isso que foi usado para o gráfico do livro. Os rótulos de texto foram aplicados à mão no photoshop, acredito.

Aliás, a coloração das células estava relacionada a uma estatística que havíamos desenvolvido para formar o gráfico em (A)

jdowdell
fonte
11
Bem vindo ao site. Isso é quase como eu poderia ter tentado fazer isso. Use qualquer layout de gráfico para atribuir coordenadas xy aos nós. (Em alguns layouts baseados em força, pode ser possível tornar as células aproximadamente do tamanho desejado com base na especificação de pesos e massa de arestas, mas duvido que sejam exatas.) Depois de criar as áreas de voronoi do layout do gráfico original, eu faria use uma ferramenta de cartograma, como Scapetoad , para tornar as áreas finais proporcionais à estatística de interesse. Isso acaba sendo bastante semelhante ao programa que você sugere no box2d.
Andy W
0

Parece mais um problema de nuvem de palavras com uma aparência de polígono Voronoi. Você precisa usar a palavra frequência para decidir a localização (alta frequência significa centro). Desde que a localização das palavras seja determinada, desenhar o polígono de Voronoi não deve ser um grande problema.

Xiaoyue
fonte