2013-07-13 13 views
5

Jak zmienić kolor krawędzi na wykresie w sieci w oparciu o ciężary tych krawędzi?Kolorowanie krawędzi siatki sieciowej na podstawie ciężaru

Poniższy kod po prostu nadaje wszystkie czarne krawędzie, mimo że mapowanie kolorów jest strumieniem! (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) 

Skalowanie grubości krawędzi od 0 do 1 niczego nie zmienia.

Nie jestem pewien, jak powyższy kod różni się od tego w related question, z tym że nie używam pętli dla draw_networkx, ponieważ nie animuję wykresu.

Odpowiedz

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 

Po prostu zmodyfikowałem przykładowy kod z siecix, który kreśli prosty wykres.

Powiązane problemy