Visualização de redes multiníveis com layouts de gráficos

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon schochastics, e gentilmente contribuiu para os R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

Este post apresenta layout_as_multilevel(), uma nova função no pacote {{graphlayouts}}. Como o nome sugere, esse
A função pode ser usada para visualizar redes multiníveis.

Uma rede multinível consiste em dois (ou mais) níveis
com diferentes conjuntos de nós e vínculos intra-nível. Por exemplo, um nível poderia ser cientistas e seus laços de colaboração e os
o segundo nível são laboratórios e laços entre eles, e as arestas entre níveis são as afiliações de cientistas e laboratórios.

O pacote {{graphlayouts}} contém uma rede multinível artificial (formato igraph) que será usada ao longo deste post.

data("multilvl_ex", package = "graphlayouts")

O pacote assume que uma rede multinível possui um atributo de vértice chamado lvl qual
mantém as informações de nível (1 ou 2).

library(igraph)
library(graphlayouts) 
library(ggraph)
library(threejs)

O algoritmo subjacente de layout_as_multilevel() tem três versões diferentes,
que pode ser usado para enfatizar diferentes recursos estruturais de uma rede multinível.

Independentemente da opção escolhida, o algoritmo produz internamente um layout 3D, onde
cada nível é posicionado em um plano y diferente. O layout 3D é então mapeado para 2D com um projeção isométrica.
Os parametros alpha e beta controlar a perspectiva da projeção.
Os valores padrão parecem funcionar em muitas instâncias, mas nem sempre são ideais.
Como diretriz aproximada: beta gira o gráfico em torno do eixo y (em 3D) e alpha move o POV para cima ou para baixo.

Layout completo

Um layout para toda a rede pode ser calculado via layout_as_multilevel() configuração type = "all".
Internamente, o algoritmo produz um layout de tensão 3D restrito (cada nível em um plano y diferente) que é então
projetado para 2D. Esse layout ignora possíveis diferenças em cada nível e otimiza apenas o layout geral.

xy 

Para visualizar a rede com o {{ggraph}}, convém desenhar as arestas de cada nível (e arestas entre níveis)
com um geom de borda diferente. Isso lhe dá mais flexibilidade para controlar a estética e pode ser facilmente alcançado
com um filtro.

ggraph(multilvl_ex, "manual", x = xy[, 1], y = xy[, 2]) +
  geom_edge_link0(
    aes(filter = (node1.lvl == 1 & node2.lvl == 1)),
    edge_colour = "firebrick3",
    alpha = 0.5,
    edge_width = 0.3
  ) +
  geom_edge_link0(
    aes(filter = (node1.lvl != node2.lvl)),
    alpha = 0.3,
    edge_width = 0.1,
    edge_colour = "black"
  ) +
  geom_edge_link0(
    aes(filter = (node1.lvl == 2 &
                    node2.lvl == 2)),
    edge_colour = "goldenrod3",
    edge_width = 0.3,
    alpha = 0.5
  ) +
  geom_node_point(aes(shape = as.factor(lvl)), fill = "grey25", size = 3) +
  scale_shape_manual(values = c(21, 22)) +
  theme_graph() +
  coord_cartesian(clip = "off", expand = TRUE) +
  theme(legend.position = "none")

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Layouts separados para os dois níveis

Em muitos casos, pode haver diferentes propriedades estruturais inerentes aos níveis de
a rede. Nesse caso, duas funções de layout podem ser passadas para layout_as_multilevel() lidar
com essas diferenças. Em nossa rede artificial, o nível 1 tem uma estrutura de grupo oculto e o nível 2
possui uma estrutura núcleo-periferia.

Para usar esta opção de layout, defina type = "separate" e especifique duas funções de layout com FUN1 e FUN2.
Você pode alterar os parâmetros internos dessas funções de layout com listas nomeadas no params1 e params2
argumento. Observe que esta versão otimiza as arestas entre níveis apenas minimamente. A ênfase está no
estruturas intra-nível.

xy 

Novamente, tente incluir um geom de borda para cada nível.

cols2 

Em vez da projeção 2D padrão, layout_as_multilevel() também pode retornar o layout 3D
definindo project2d = FALSE. O layout 3D pode então ser usado com, por exemplo {{threejs}} para produzir uma interação
Visualização em 3D.

xyz 



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha o seu sabor: o email, Twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br