Frage

Ich möchte NetworkX verwenden, um ein Layout für ein Diagramm zu generieren. Ist es möglich, dieses Layout auf zu übertragen? Zytoscape und dort zeichnen? Ich habe versucht, einfach eine Grafik als zu schreiben

import networkx as nx
G = nx.Graph()
G.add_edge(0,1,weight=.1)
G.add_edge(2,1,weight=.2)
nx.write_gml(G,'g.gml')
nx.write_graphml(G,'g.xml')

Aber keiner davon wird in Cytoscape gelesen. Ich bin mir nicht sicher, wie ich das Diagramm in einem Format übertragen soll, das Positionen enthalten kann.

War es hilfreich?

Lösung

Dein g.xml Die GraphML -Datei sieht gut aus und lädt für mich in Cytoscape (ich bin auf einem Mac). Haben Sie die installiert GraphMlreader Plugin?

Wenn nicht, laden Sie es herunter und lassen Sie es in Ihren Plugins -Ordner fallen, starten Sie Cytoscape neu und laden Sie das g.xml Wieder einnetieren.

Aktualisieren Hier ist ein Code zum Hinzufügen des Grafik-Look-and-Feel und der Positionierung zu einem Netzwerk-Diagramm. Es ist ein bisschen ausführlich, und Sie können möglicherweise einige Attribute abhängig von Ihren Anforderungen weglassen:

import networkx as nx

G = nx.Graph()
G.add_edge(0, 1, weight=0.1, label='edge', graphics={
    'width': 1.0, 'fill': '"#0000ff"', 'type': '"line"', 'Line': [],
    'source_arrow': 0, 'target_arrow': 0})
nx.set_node_attributes(G, 'graphics', {
    0: {'x': -85.0, 'y': -97.0, 'w': 20.0, 'h': 20.0,
        'type': '"ellipse"', 'fill': '"#889999"', 'outline': '"#666666"',
        'outline_width': 1.0},
    1: {'x': -16.0, 'y': -1.0, 'w': 40.0, 'h': 40.0,
        'type': '"ellipse"', 'fill': '"#ff9999"', 'outline': '"#666666"',
        'outline_width': 1.0}
    })
nx.set_node_attributes(G, 'label', {0: "0", 1: "1"})
nx.write_gml(G, 'network.gml')

Ergebnis:

enter image description here

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