我正在尝试根据一些数值设置网络的节点颜色。我注意到,但是,在指定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)
如果我们像下面这样向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图,有一种简单的方法吗?
答案 0 :(得分:1)
让我们看一下matplotlib.pyplot.scatter documentation中的vmin
和vmax
参数。作为文档的一部分,它指出
有关可选关键字的说明,请参见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)
现在,让我们对缩放比例进行一些修改,以免完全掩盖颜色,而不是添加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)