2013-07-13 14 views
5

Wie ändere ich die Farbe der Kanten in einem Graphen in Networkx auf der Grundlage der Gewichte dieser Kanten?Coloring networkx Kanten basierend auf Gewicht

Der folgende Code gibt nur alle schwarzen Kanten, obwohl die Colormap Jet ist! (picture)

nx.draw_networkx(g,pos=pos,with_labels=True,edge_colors=[g[a][b]['weight'] for a,b in g.edges()], width=4,edge_cmap = plt.cm.jet) 

Skalieren der Kantengewichte werden zwischen 0 und 1 ändert nichts.

Ich bin mir nicht sicher, wie sich der obige Code von dem in einer related question unterscheidet, außer dass ich keine Schleife für draw_networkx verwende, weil ich das Diagramm nicht animiere.

Antwort

2
#!/usr/bin/env python 
    """ 
    Draw a graph with matplotlib. 
    You must have matplotlib for this to work. 
    """ 
    try: 
     import matplotlib.pyplot as plt 
     import matplotlib.colors as colors 
     import matplotlib.cm as cmx 
     import numpy as np 
    except: 
     raise 

    import networkx as nx 

    G=nx.path_graph(8) 
    #Number of edges is 7 
    values = range(7) 
    # These values could be seen as dummy edge weights 

    jet = cm = plt.get_cmap('jet') 
    cNorm = colors.Normalize(vmin=0, vmax=values[-1]) 
    scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=jet) 
    colorList = [] 

    for i in range(7): 
     colorVal = scalarMap.to_rgba(values[i]) 
     colorList.append(colorVal) 


    nx.draw(G,edge_color=colorList) 
    plt.savefig("simple_path.png") # save as png 
    plt.show() # display 

Wir haben gerade einen Beispielcode von networkx geändert, der einen einfachen Graphen darstellt.

Verwandte Themen