2017-06-28 5 views
0

J'ai un fichier XML avec deux types de noeuds différents (appelons le noeud 'a' et le noeud 'b'). Ils sont connectés. Je veux présenter le noeud 'a' comme - disons un carré, et le noeud 'b' comme un cercle. Est-ce possible dans networkx et Python?Est-il possible de mélanger différents nœuds en forme dans un graphique networkx?

Mon plan initial était de déclarer deux graphiques:

AG=nx.DiGraph() 
BG=nx.DiGraph() 

Puis ajouter des nœuds à chacun d'entre eux en fonction de ce type de nœud, il est - et je voudrais donc itérer le XML et si le nœud était un ' tapez un », puis l'ajouter à AG et si elle est un type B ajouter à BG

maintenant, je peux afficher chaque graphique et définir sa forme - généralement:

nx.draw_networkx(EG, font_family="Arial", font_size=10, 
       node_size=2000, node_shape="s", node_color='r', labels=node_labels, with_labels=True) 

La partie sur laquelle elle tombe est lorsque j'essaie d'ajouter des arêtes entre un nœud «a» et un nœud «b».

Des idées sur comment cela pourrait fonctionner?

Répondre

0

Conserver l'ensemble des données dans un graphique:

G = nx.DiGraph() 

garder aussi des listes de A_nodes et B_nodes. Ensuite, vous pouvez sélectionner des sous-graphes de G à l'aide

AG = G.subgraph(A_nodes) 
BG = G.subgraph(B_nodes) 

Comme tous les noeuds sont en G, vous pouvez maintenant ajouter des bordures entre A-noeuds et B noeuds:

G.add_edge(a_node, b_node) 
+0

Magnifique! C'est Magic, merci. –