2016-05-21 1 views
1

dire que j'ai noeuds ['a','b','c'] dans le réseau, et les paires sont stockées dans une liste:Poids de bords selon le nombre d'occurence dans NetworkX

[('a','b'), ('a','b'), ('b','a'), ('b','c'), ('a','c')]

Je veux créer un graphique du réseau pondéré en utilisant NetworkX et matplotlib. Puisque la paire ('a', 'b') se produit 3 fois (dans un réseau non orienté, ('b', 'a') compte aussi), alors que les deux ('b', 'c') et ('a' , 'c') ne se produit qu'une fois, je voudrais changer la largeur des bords en fonction de leur poids.

Quelqu'un pourrait-il nous éclairer à ce sujet?

Répondre

2

Quelque chose comme ça devrait fonctionner. Savoir si le bord existe et s'il met à jour les poids

default_weight = W 
G = nx.Graph() 
for nodes in node_list: 
    n0 = nodes[0] 
    n1 = nodes[1] 
    if G.has_edge(n0,n1): 
     G[n0][n1]['weight'] += default_weight 
    else: 
     G.add_edge(n0,n1, weight=default_weight) 
+0

Merci! Cela fait exactement ce que je veux. – ichbinangela