加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 基于权重着色networkx边缘

发布时间:2020-12-16 21:36:52 所属栏目:Python 来源:网络整理
导读:如何根据这些边的权重更改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) 将边权重缩
如何根据这些边的权重更改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之间不会改变任何东西.

我不确定上面的代码与related question中的代码有什么不同,除了我没有为draw_networkx使用循环,因为我没有为图形设置动画.

解决方法

#!/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中的一个示例代码,该代码绘制了一个简单的图形.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读