R & Gephi: i bordi in una rete non sono importati correttamente utilizzando il pacchetto RGEGEXF
-
21-12-2019 - |
Domanda
Ho un problema con il pacchetto R "rgexf"
. In particolare, ho un problema con i bordi della rete che importa a Gephi. In r i posso produrre un database di vertici
>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 un database di bordi (un singolo bordo deve essere preciso)
>edges
Source Target
1 5 9
.
Creo un file .gexf usando
>write.gexf(output = path_gexf, nodes = vertices, edges = edges, defaultedgetype = "undirected")
.
Dove path_gexf
è solo il percorso del file di output (che si chiama ESEMPIO.GEXF).
Apri esempio.gexf usando Gephi (versione 0.8.2 beta).
Nell'immagine 1:
È possibile visualizzare il report di importazione in Gephi: il numero di vertici e bordi è corretto; Modo manualmente il tipo di grafico per non rilevato e imporco tutti i dati nella finestra di laboratorio di dati.
- .
- Domanda 1 . Perché dovrei specificare "Nonreted" nella finestra del report di importazione se l'ho già fatto nella funzione Write.gexf?
- Domanda 2. Come correggere l'importazione del file example.gexf? A livello di codice R, tutto è liscio, e i vertici / i bordi sono generati correttamente dal mio codice. I problemi si verificano con Gephi.
in Image2
È possibile vedere che, dopo l'importazione, il tipo di grafico si interrompe automaticamente su "Diretto" e No Edge è effettivamente importato.
IN IMMAGINE 3
Abbiamo la lista dei vertici: tutto va bene. Le etichette e gli ID sono importate correttamente. IN Immagine 4
È possibile visualizzare la finestra di laboratorio di dati per i bordi: nessun bordo è importato, come già indicato nell'immagine 2. Io davvero non capisco perché nessun bordo è importato.
Note: Ho un sacco di file .gexf con problemi riguardanti l'importazione di bordi; In molti casi, solo pochi bordi vengono importati con "sorgente" e "bersaglio" incredibile. Stranamente, i bordi paralleli sono sempre contati correttamente in base alle loro molteplicità.
Mi scuso per il lungo post.
Modifica: alcuni test con fittizio codice R
Ho fatto alcuni test usando il codice di Tobin di @James (grazie!). Funziona bene anche sul mio PC. Ho effettuato test con grafici con 2 bordi: i test erano tutti ok. Quindi mi sono trasferito nei 3,4 casi dei bordi, 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")
.
In entrambi i casi il codice XLM è corretto w.r.t. I nodi e i bordi ID, etichette, fonti e bersagli.
Dove sono i problemi? Nella custodia a 3 bordi il report di importazione in Gephi è corretto, mentre la finestra del bordo del laboratorio dei dati non mostra il bordo
<edge id="1" source="1" target="1" weight="1.0"/>
.
Nelle 4 bordi case il bordo
<edge id="0" source="5" target="2" weight="1.0"/>
.
manca, invece.
Inizio a credere che ci sia un bug in Gephi 0.8.2 e non nel mio codice.
Qualsiasi suggerimento / commento?
Soluzione
Domanda 1: Anche se hai già specificato il grafico come non rilevato nel file GEXF, diretto è il valore predefinito, anche se cliccarlo è un po 'fastidioso, almeno non è così grande.Da una prospettiva di sicurezza, è più facile consentire a un utente di ricontrollare il tipo di grafico che stanno importando rispetto a potenzialmente selezionare in modo errato.Ci vogliono 2 secondi, non così grande di un accordo.
Domanda 2: Ho copiato il tuo esempio
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")
.
Ma non ho problemi con i bordi.
Forse puoi includere il tuo codice esatto che fallisce?Forse i tuoi bordi non sono in Data. FORMA DA DATA.Solo indovinando perché non ho potuto replicare il tuo errore.