7

エッジの重みに基づいて、networkx のグラフのエッジの色を変更するにはどうすればよいですか?

次のコードは、カラーマップがジェットであるにもかかわらず、すべての黒いエッジを与えるだけです!(写真)

 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)

エッジの重みを 0 から 1 の間でスケーリングしても、何も変わりません。

グラフをアニメーション化していないため、ループを使用しないことを除いて、上記のコードが関連する質問のコードとどのように異なるかはわかりません。draw_networkx

4

2 に答える 2

3
    #!/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

単純なグラフをプロットする networkx のサンプル コードを変更しただけです。

于 2013-07-14T08:39:54.483 に答える