2017-12-20 7 views
0

Ich habe Graph A. Für jeden Knoten in Graph A, verwende ich einige Regeln den Namen des Knotens, zu konvertieren und entscheiden, es zu Graph B. SoNetworkX: Verbindungsknoten zwischen zwei Graphen

hinzufügen jetzt habe ich B wurde von A abgeleitet. Ich habe mich gefragt, ob es möglich ist, eine Art Verbindung zwischen dem ursprünglichen Knoten in A und dem transformierten Knoten in B zu erstellen. Ich konnte keine Methode finden, um dies mit der networkx-Bibliothek zu tun. Alle Zeiger wären hilfreich ...

+0

Sie müssen mehr angeben, was Sie mit "einer Art Link" bedeuten. – Paul

+0

@Paul Ich dachte entlang der Zeilen, dass ich in der Lage sein sollte, den Knoten in A zu gehen und dann den zugehörigen Knoten im anderen Graphen B zu bekommen. Ich hoffe, dass das Sinn ergibt – Lonewolf

Antwort

0

Knoten können Attribute haben. In jedem Knoten in Diagramm A können Sie ein Attribut erstellen, das den entsprechenden Knoten in Diagramm B enthält.

Im folgenden Code enthält Diagramm A drei Knoten: 1, 2 und 3. Diagramm B wird mit Knoten 1 erstellt , 4 und 9 (die Quadrate der Werte der Knoten in A). Wenn jeder Knoten in B erstellt wird, wird sein Wert im Attribut b_node des A-Knotens gespeichert, von dem er stammt.

import networkx as nx 

def main(): 
    # Create graph A 
    a = nx.Graph() 
    a.add_node(1) 
    a.add_node(2) 
    a.add_node(3) 

    # Create graph B with nodes that are squares of the nodes in A 
    # Add to each node in A an attribute (b_node) 
    # to hold the corresponding node in B 
    b = nx.Graph() 
    for node in a: 
     a.add_node(node, b_node=node * node) 
     b.add_node(node * node) 

    print("A:") 
    print(a.nodes.data()) 
    print("\nB:") 
    print(b.nodes.data()) 

if __name__ == '__main__': 
    main() 

Ausgang:

A: 
[(1, {'b_node': 1}), (2, {'b_node': 4}), (3, {'b_node': 9})] 

B: 
[(1, {}), (4, {}), (9, {})] 
Verwandte Themen