使用绝对值的python networkx颜色图

时间:2018-11-26 12:54:53

标签: python networkx colormap

我正在尝试根据一些数值设置网络的节点颜色。我注意到,但是,在指定node_color的向量中,如果使用matplotlib颜色图,则只有相对值很重要。我想要的是颜色可以反映绝对值。

例如,以下代码生成一个网络,其节点具有不同的颜色:

G = nx.cycle_graph(6)
edges = np.array(G.edges)
pos = nx.spring_layout(G, iterations=200)

values = np.array([0.1,0.2,0.45,0.25,0.35,0.15])
nx.draw(G, pos, node_color=values,cmap=plt.cm.Reds)

enter image description here

如果我们像下面这样向node_color向量添加一个常量

values = np.array([0.1,0.2,0.45,0.25,0.35,0.15])+1
nx.draw(G, pos, node_color=values,cmap=plt.cm.Reds)

我希望所有节点的颜色都变深,但是代码返回的网络相同。有办法改变吗?我知道在imshow中我们可以使用参数“ norm”进行更改。但是,对于networkx图,有一种简单的方法吗?

1 个答案:

答案 0 :(得分:1)

让我们看一下matplotlib.pyplot.scatter documentation中的vminvmax参数。作为文档的一部分,它指出

  

有关可选关键字的说明,请参见networkx.draw_networkx()。

然后,在参数的draw_newtorkx docs中,有cmap和vmin,vmax用于缩放。

G = nx.cycle_graph(6)
edges = np.array(G.edges)
pos = nx.spring_layout(G, iterations=200)

values = np.array([0.1,0.2,0.45,0.25,0.35,0.15])
nx.draw(G, pos, node_color=values,cmap=plt.cm.Reds, vmin=0, vmax=1)

enter image description here

现在,让我们对缩放比例进行一些修改,以免完全掩盖颜色,而不是添加1,因为我们没有进行标准化,所以只添加.25。

values = np.array([0.1,0.2,0.45,0.25,0.35,0.15])+.25
nx.draw(G, pos, node_color=values,cmap=plt.cm.Reds, vmin=0, vmax=1)

enter image description here