Visualização de gráfico com Neo4j usando Neovis.js

Aproveitando algoritmos de gráfico para visualização de dados

(William Lyon) (16 de abril de 2018)

Atualização: The OReilly book “Graph Algorithms on Apache Spark and Neo4j Book está agora disponível como download gratuito do e-book em neo4j.com

Nesta postagem, usaremos uma instância do Neo4j Sandbox para iniciar com um conjunto de dados do Twitter, executar o PageRank e a detecção da comunidade nos dados. Em seguida, mostre como incorporar uma visualização de gráfico em um aplicativo da web usando Neovis.js .

Nesta postagem, exploramos como criar visualizações de dados de gráfico que usam os resultados de algoritmos de gráfico como PageRank e detecção de comunidade . Depois de executar alguns algoritmos de gráfico usando a biblioteca neo4j-graph-algorítmos , usaremos a biblioteca de visualização de gráfico JavaScript Neovis.js para criar visualizações que podem ser incorporadas em um aplicativo da web, buscando dados diretamente do Neo4j.

Objetivos de visualização de gráfico

Existem diferentes motivações e ferramentas para criar visualizações de gráficos. Isso inclui ferramentas para explorar o gráfico – o tipo de visualizações interativas que você pode ver em Navegador Neo4j . Ou visualizações para mostrando os resultados de algumas análises . Eles podem ser interativos (algo a ser incorporado em um aplicativo da web ou mesmo um aplicativo independente) ou estáticos, com o objetivo de transmitir um significado específico que pode ser usado impresso ou em uma postagem de blog.

Esta postagem se concentrará em uma ferramenta que aborda alguns objetivos específicos de visualização de gráfico. Esta ferramenta é Neovis.js e é usada para criar visualizações gráficas baseadas em JavaScript que são incorporadas em um aplicativo da web. Ele usa o driver Neo4j JavaScript para se conectar e buscar dados do Neo4j e uma biblioteca JavaScript para visualização chamada vis .js para renderizar visualizações de gráfico. Neovis.js também pode aproveitar os resultados de algoritmos de gráfico como PageRank e detecção de comunidade para estilizar a visualização vinculando valores de propriedade a componentes visuais.

Este screencast mostra como usar a biblioteca Neovis.js para criar visualizações de dados de gráfico estilizadas para os resultados de algoritmos de gráfico com dados do Neo4j.

Visualização de gráfico + Algoritmos de gráfico

Existem três comuns maneiras como as visualizações de gráfico podem ser aprimoradas com algoritmos de gráfico. Especificamente, isso envolve estilizar os componentes visuais proporcionalmente aos resultados desses algoritmos:

  1. Tamanho do nó de ligação a um algoritmo de centralidade , como grau, PageRank ou centralidade de intermediação. Isso nos permite ver rapidamente os nós mais importantes na rede.
  2. Agrupamento visual comunidades ou clusters no gráfico é feito por meio do uso de cores, para que possamos identificar rapidamente esses agrupamentos distintos.
  3. Espessura da relação de estilo proporcionalmente a uma espessura da borda , em dados de redes sociais pode ser o número de interações entre dois personagens, em dados de logística e roteamento pode ser a distância entre dois centros de distribuição e é útil para algoritmos de pathfinding (como como A * ou Dijkstras).

Primeiros passos com o conjunto de dados

Usaremos a sandbox russa Twitter Trolls como nosso conjunto de dados. Este conjunto de dados contém tweets de contas Troll russas conhecidas, conforme divulgado publicamente por NBC News. Você pode criar sua própria instância Neo4j Sandbox aqui.

O modelo de dados para o conjunto de dados Trolls do Twitter inclui Tweets , Usuários, Hashtags, URLs compartilhados em Tweets e menções e retweets.

Nos dados do gráfico, muitas vezes alguns dos relacionamentos mais interessantes são inferidos , e não modelado diretamente nos dados. O gráfico de retuíte usuário-usuário é um exemplo disso. Quais usuários estão retuitando quais outros usuários?Quem é o usuário mais importante neste gráfico de retuíte? Existem grupos de usuários que retweetam com frequência?

Aqui temos um tweet que foi postado por um usuário, que outro usuário retuitou. Isso implica em um relacionamento de retuítes usuário-usuário. Nosso primeiro passo será encontrar essas relações de retuítes inferidas e executar nossos algoritmos de gráfico.

Para encontrar os usuários e comunidades mais importantes usando esta rede de retuítes, iremos primeiro encontre todos os usuários Troll e crie um RETWEETS relacionamento conectando diretamente os usuários no gráfico. Armazenamos uma propriedade count no relacionamento que representa o número de vezes que o usuário retuitou o outro:

Depois de criarmos esses RETWEETS relacionamentos, podemos executar o PageRank nesta parte do gráfico (também podemos usar uma consulta Cypher para executar o PageRank no gráfico projetado sem criar explicitamente os relacionamentos):

Visto que especificamos write: true acima, não apenas executará o PageRank, mas adicionará uma propriedade pagerank aos nós que contém sua pontuação do PageRank. Podemos então consultar esse valor de propriedade para encontrar as dez principais contas Troll por pontuação do PageRank:

E, finalmente, podemos executar um algoritmo de detecção de comunidade na rede de retuítes, neste caso, propagação de rótulos:

Isso adicionará uma propriedade community aos nós, indicando qual comunidade o o algoritmo determinou ao qual o nó pertence.

Então, agora executamos dois algoritmos de gráfico (PageRank e propagação de rótulo), mas como interpretamos os resultados? Uma visualização pode nos ajudar a encontrar insights nos dados.

Criando uma visualização de gráfico com Neovis.js

Para criar uma visualização com Neovis.js, primeiro precisamos nos conectar ao Neo4j. Na guia de detalhes de nossa instância Sandbox, podemos encontrar os detalhes de conexão de nossa instância Neo4j:

A string de conexão do servidor, nome de usuário e senha serão incluídos em um objeto de configuração que passaremos para o construtor do Neovis. Também precisaremos especificar quais rótulos de nó queremos visualizar e como eles devem ser estilizados (quais propriedades determinam o tamanho e a cor do nó).

O Neovis.js funciona preenchendo um

elemento com a visualização, então precisaremos especificar a id desse elemento no objeto de configuração, bem como como conectar à nossa instância Neo4j e quais propriedades usar para determinar o tamanho do nó, cor e espessura do relacionamento. Aqui está o código para gerar uma visualização gráfica de nossa rede retuíte de nossa instância Sandbox Neo4j, usando a propriedade pagerank para determinar o tamanho do nó, community para cor e a count propriedade de relacionamento para espessura de relacionamento:

E esta é a aparência de nossa visualização:

Existem mais algumas opções de configuração sobre as quais você pode ler na documentação do projeto.

Recursos

Download grátis: OReilly “Graph Algorithms on Apache Spark e Neo4j”

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *