基于权重给networkx边着色

8

如何根据边的权重在networkx中更改图形的边缘颜色?

以下代码只会给出所有黑色的边缘,即使使用了jet颜色映射! (图片)

 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 ,因为我没有对图表进行动画处理。

2个回答

3
networkx 2.2 中,一个更为简单的用法可以在 这个示例中看到。同时采用了 Vikram 上面提供的代码。
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cmx
import numpy as np

import networkx as nx

G=nx.path_graph(8)
#Number of edges is 7
values = range(7)
nx.draw(G, edge_color=values, cmap=plt.cm.jet)
plt.show() # display

enter image description here


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获取的示例代码,用于绘制一个简单的图形。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接