Pergunta

Eu tenho um problema com o pacote R "rgexf".Em particular, tenho um problema com o arestas da rede que importo para o Gephi.Em RI posso produzir um banco de dados de vértices

>vertices
   Id Label
1   1     1
2   2     2
3   3     3
4   4     4
5   5     5
6   6     6
7   7     7
8   8     8
9   9     9
10 10    10

e um banco de dados de arestas (uma única aresta para ser mais preciso)

>edges 
      Source Target
    1      5      9

Eu crio um arquivo .gexf usando

  >write.gexf(output = path_gexf, nodes = vertices, edges = edges,  defaultedgetype = "undirected")

onde path_gexf é apenas o caminho do arquivo de saída (chamado example.gexf).
Abro example.gexf usando Gephi (versão 0.8.2 beta).Na imagem 1:enter image description here

você pode ver o relatório de importação no Gephi:o número de vértices e arestas está correto;Altero manualmente o tipo de gráfico para não direcionado e importo todos os dados para a janela do Data Laboratory.

  1. Questão 1. Por que devo especificar "não direcionado" na janela do relatório de importação se já fiz isso na função write.gexf?

Na imagem2

enter image description here

você pode ver que, após a importação, o tipo de gráfico muda automaticamente para "direcionado" e nenhuma borda é realmente importada.

Na imagem 3

enter image description here

temos a lista de vértices:está tudo bem.Etiquetas e IDs são importados corretamente.Na imagem 4

enter image description here

você pode ver a janela do Data Laboratory para arestas:nenhuma borda é importada, conforme já observado na imagem 2.Eu realmente não entendo porque nenhuma borda é importada.

  1. Questão 2.Como corrigir a importação do arquivo example.gexf?No nível do código R, tudo é suave e os vértices/arestas são gerados corretamente pelo meu código.Problemas ocorrem com Gephi.

Observações:Tenho muitos arquivos .gexf com problemas relacionados à importação de arestas;em muitos casos, apenas algumas arestas são importadas com "Origem" e "Destino" incorretos.Estranhamente, arestas paralelas são sempre contadas adequadamente de acordo com suas multiplicidades.

Peço desculpas pela longa postagem.

EDITAR:alguns testes com código R fictício

Fiz alguns testes usando o código do @James Tobin (obrigado!).Funciona bem também no meu pc.Fiz testes com gráficos com 2 arestas:os testes foram todos ok.Então mudei para os casos de 3,4 arestas, usando

require(rgexf)
vertices <- as.data.frame(cbind(seq(1,10),seq(1,10)))
colnames(vertices) <- c('Id','Label')
edges <- as.data.frame(cbind(c(5,1,2),c(1,1,3)))
colnames(edges) <- c('Source','Target')
write.gexf(nodes=vertices,edges=edges,
           defaultedgetype = "undirected")

e

require(rgexf)
vertices <- as.data.frame(cbind(seq(1,10),seq(1,10)))
colnames(vertices) <- c('Id','Label')
edges <- as.data.frame(cbind(c(5,1,4,2),c(2,3,1,2)))
colnames(edges) <- c('Source','Target')
write.gexf(nodes=vertices,edges=edges,
           defaultedgetype = "undirected")

Em ambos os casos, o código XLM está correto em relação ao valor.os IDs de nós e bordas, rótulos, fontes e destinos.

Onde estão os problemas?No caso das 3 arestas o relatório de importação no Gephi está correto, enquanto a janela de arestas do laboratório de dados não mostra a aresta

<edge id="1" source="1" target="1" weight="1.0"/>

No caso das 4 arestas a aresta

 <edge id="0" source="5" target="2" weight="1.0"/>

está faltando, em vez disso.

Começo a acreditar que há um bug no Gephi 0.8.2 e não no meu código.

Alguma sugestão/comentário?

Foi útil?

Solução

Questão 1:Mesmo que você já tenha especificado o gráfico como não direcionado no arquivo gexf, direcionado é o padrão, embora clicar nele seja um pouco chato, pelo menos não é grande coisa.Do ponto de vista da segurança, é mais fácil permitir que um usuário verifique novamente que tipo de gráfico está importando do que potencialmente selecionar incorretamente.Demora 2 segundos, não é grande coisa.

Questão 2:Copiei seu exemplo

require(rgexf)
vertices <- as.data.frame(cbind(seq(1,10),seq(1,10)))
colnames(vertices) <- c('Id','Label')
edges <- as.data.frame(cbind(5,9))
colnames(edges) <- c('Source','Target')
write.gexf(output='testgex.gexf',nodes=vertices,edges=edges,
          defaultedgetype = "undirected")

mas não tenho problemas com bordas.enter image description here enter image description here enter image description here

Talvez você possa incluir o código exato que falhou?Talvez suas arestas não estejam no formato data.frame?Só estou adivinhando porque não consegui replicar seu erro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top