Como animar o crescimento de uma rede social?

11

Estou procurando uma biblioteca / ferramenta para visualizar como as redes sociais mudam quando novos nós / arestas são adicionados a ela.

Uma das soluções existentes é o SoNIA: Social Network Image Animator . Vamos fazer filmes como este .

A documentação do SoNIA diz que está quebrada no momento e, além disso, eu preferiria a solução baseada em JavaScript. Portanto, minha pergunta é: você conhece alguma ferramenta ou pode me indicar algumas bibliotecas que facilitariam essa tarefa o mais fácil possível?

Logo após postar esta pergunta, vou explorar o sigma.js , portanto, considere esta biblioteca coberta.

Em geral, meus dados de entrada seriam algo assim:

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

Portanto, aqui temos três pontos no tempo (1, 2, 3), três nós (A, B, C) e três arestas, que representam um fechamento triádico entre os três nós considerados.

Além disso, cada nó terá dois atributos (idade e sexo), então eu gostaria de poder alterar a forma / cor dos nós.

Além disso, após adicionar um novo nó, seria perfeito ter algum ForceAtlas2 ou algoritmo similar para ajustar o layout do gráfico.

Wojciech Walczak
fonte

Respostas:

11

Animações extravagantes são legais

Fiquei muito impressionado quando vi essa animação do repositório git do discurso . Eles usaram Gourse, que é especificamente para o git. Mas pode dar idéias sobre como representar a dinâmica do crescimento.

Você pode criar animações com matplotlib

Essa resposta do stackoverflow parece apontar para uma solução python / networkx / matplotlib.

Mas o D3.js fornece interação

Se você está procurando uma solução baseada na Web, o d3.js é excelente. Veja isto , isto e isto, por exemplo. Consulte também esta pergunta de stackoverflow , a resposta aceita aponta para D3.js. novamente.

Conclusão

Eu seria atraído pelas opções python / networkx para análise de rede (possivelmente para adicionar atributos ao seu arquivo de dados brutos, por exemplo). Então, para visualização e disseminação, o D3.js é perfeito. Você pode se surpreender ao ver como é fácil escrever o d3.js depois de entrar nele. Eu acredito que até funciona dentro de um notebook ipython!

Graeme Stuart
fonte
Obrigado, eu gosto desta solução Python / networkx / matplotlib, pois é o meu ambiente de trabalho padrão e é fácil criar um gif com esse código. Ainda assim, algo que parece mais agradável na Web iria vencer esta solução :)
Wojciech Walczak
5

Meu primeiro palpite é visualizar a rede social no Tableau .

E particularmente: criando gráficos de rede no Tableau .

O que você precisa é adicionar dimensão de tempo à seção "Páginas" para poder ver a dinâmica de alterações na rede.

Esta é a tela do link acima. insira a descrição da imagem aqui

IharS
fonte
1
Olá, obrigado por esta dica, mas eu preferiria algo que seja facilmente publicável na Web de forma dinâmica. Além disso, prefiro soluções gratuitas, enquanto o Tableau - corrija-me se estiver errado - está disponível apenas como uma versão de avaliação.
Wojciech Walczak
Ele também possui a edição "Pública", o que significa que você precisa armazenar / compartilhar seus resultados na Web e não pode salvá-lo localmente.
IharS
2
@WojciechWalczak Talvez o gephi possa ser usado no lugar do Tableau.
Amir Ali Akbari
5

Descobriu-se que esta tarefa foi bastante fácil de realizar usando vis.js . Este foi o melhor exemplo de código que eu encontrei.

O exemplo do que eu construí sobre isso está aqui (role até a parte inferior deste post). Este gráfico representa o crescimento de uma sub-rede de amigos do Facebook. Pontos verdes são fêmeas, azuis são machos. Quanto mais escura a cor, mais antigo o usuário. Ao clicar em "Adicionar", você pode adicionar mais nós e arestas ao gráfico.

De qualquer forma, ainda estou interessado em outras maneiras de realizar essa tarefa, portanto não aceitarei nenhuma resposta no momento.

Obrigado por suas contribuições!

Wojciech Walczak
fonte
seus links estão quebrados
user1870400 22/02