R & Gephi:Kanten in einem Netzwerk werden mit dem rgexf-Paket nicht ordnungsgemäß importiert

StackOverflow https://stackoverflow.com//questions/22026659

  •  21-12-2019
  •  | 
  •  

Frage

Ich habe ein Problem mit dem R-Paket "rgexf".Insbesondere habe ich ein Problem mit dem Kanten des Netzwerks, das ich in Gephi importiere.In R kann ich eine Datenbank mit Scheitelpunkten erstellen

>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

und eine Datenbank mit Kanten (genauer gesagt eine einzelne Kante)

>edges 
      Source Target
    1      5      9

Ich erstelle eine .gexf-Datei mit

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

Wo path_gexf ist nur der Pfad der Ausgabedatei (die example.gexf heißt).
Ich öffne example.gexf mit Gephi (Version 0.8.2 Beta).Im Bild 1:enter image description here

Sie können den Importbericht in Gephi sehen:die Anzahl der Eckpunkte und Kanten ist korrekt;Ich ändere den Diagrammtyp manuell auf ungerichtet und importiere alle Daten in das Data Laboratory-Fenster.

  1. Frage 1. Warum soll ich im Importberichtsfenster „undirected“ angeben, wenn ich es bereits in der Funktion write.gexf getan habe?

In Bild2

enter image description here

Sie können sehen, dass nach dem Import der Diagrammtyp automatisch auf „gerichtet“ umgestellt wird es wird tatsächlich keine Kante importiert.

In Bild 3

enter image description here

wir haben die Liste der Eckpunkte:alles ist gut.Beschriftungen und IDs werden korrekt importiert.In Bild 4

enter image description here

Sie können das Data Laboratory-Fenster für Kanten sehen:Es wird keine Kante importiert, wie bereits in Bild 2 erwähnt.Ich verstehe wirklich nicht, warum keine Kante importiert wird.

  1. Frage 2.Wie korrigiere ich den Import der Datei example.gexf?Auf der Ebene des R-Codes ist alles glatt und Scheitelpunkte/Kanten werden von meinem Code korrekt generiert.Es treten Probleme mit Gephi auf.

Bemerkungen:Ich habe viele .gexf-Dateien mit Problemen beim Import von Kanten.In vielen Fällen werden nur wenige Kanten mit falscher „Quelle“ und „Ziel“ importiert.Merkwürdigerweise werden parallele Kanten immer entsprechend ihrer Vielfachheiten gezählt.

Ich entschuldige mich für den langen Beitrag.

BEARBEITEN:einige Tests mit Dummy-R-Code

Ich habe einige Tests mit dem Code von @James Tobin durchgeführt (danke!).Es funktioniert auch auf meinem PC einwandfrei.Ich habe Tests mit Diagrammen mit 2 Kanten durchgeführt:Die Tests waren alle in Ordnung.Dann bin ich zu den 3,4-Kanten-Hüllen übergegangen und habe verwendet

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")

Und

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 beiden Fällen ist der XLM-Code korrekt.die Knoten- und Kanten-IDs, Beschriftungen, Quellen und Ziele.

Wo liegen die Probleme?Im Fall der 3 Kanten ist der Importbericht in Gephi korrekt, während das Kantenfenster des Datenlabors die Kante nicht anzeigt

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

Im 4-Kanten-Fall die Kante

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

fehlt stattdessen.

Ich fange an zu glauben, dass es einen Fehler in Gephi 0.8.2 gibt und nicht in meinem Code.

Irgendwelche Vorschläge/Kommentare?

War es hilfreich?

Lösung

Frage 1:Auch wenn Sie das Diagramm in der gexf-Datei bereits als ungerichtet angegeben haben, ist „gerichtet“ die Standardeinstellung. Das Anklicken ist zwar etwas nervig, aber zumindest keine so große Sache.Aus Sicherheitsgründen ist es einfacher, einem Benutzer die Möglichkeit zu geben, noch einmal zu überprüfen, welche Art von Diagramm er importiert, als möglicherweise eine falsche Auswahl vorzunehmen.Es dauert 2 Sekunden, keine große Sache.

Frage 2:Ich habe Ihr Beispiel kopiert

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")

aber ich habe keine Probleme mit Kanten.enter image description here enter image description here enter image description here

Vielleicht können Sie Ihren genauen Code angeben, der fehlschlägt?Vielleicht liegen Ihre Kanten nicht in data.frame-Form vor?Ich vermute nur, dass ich Ihren Fehler nicht reproduzieren konnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top