networkx:为每个节点设置不同的alpha?

时间:2017-07-06 15:11:47

标签: python-3.x matplotlib networkx

我想为每个节点设置不同的alpha。为每个节点设置不同的颜色很容易,但alpha仅排除单个值。有人知道怎么做吗?

(我的目标是使用从蓝色到红色的颜色渐变。如果值低于中点,则为蓝色,如果高于红色.Alpha将设置渐变。)

nx.draw_networkx_nodes(g,pos=pos,nodelist=nodelist, 
node_color=node_color, alpha=1.0)

1 个答案:

答案 0 :(得分:3)

alpha值将控制透明度,而不是颜色。

如果您已经提供了node_color参数,那么您的节点将会被着色。如果你希望它们根据这些强度从蓝色变为红色,而不是alpha,请使用colormap.'Seismic'从红色变为蓝色。

nx.draw_networkx_nodes(g,pos=pos,nodelist=nodelist,node_color=node_color, cmp='seismic')

编辑:我偶然发现了一些奇怪的行为,试图深入研究这个问题。我原本认为networkx的绘图会像matplotlib的scatter绘图一样,并接受rgba颜色,允许您指定特定的颜色和透明度。但是当我使用4元组数组调用draw_networkx_nodes来表示rgba颜色时,它会将所有alpha值设置为1。

rgba_colors = np.zeros((5,4))
rgba_colors[:,0] = np.linspace(1,0,5) #red
rgba_colors[:,2] = np.linspace(0,1,5) #blue
rgba_colors[:,3] = np.linspace(0.1,1,5) #alpha values

plt.scatter([1,2,3,4,5],[1,2,3,4,5], color=rgba_colors)

这绘制了一些具有不同颜色和透明度的点。但是,如果您尝试使用networkx绘图,不仅结果绘图没有透明度,实际上已修改变量rgba_colors

G = nx.complete_graph(5)
pos = {0: [0,0], 1: [1,1], 2: [2,2], 3: [2,1], 4: [2,3]}
nx.draw_networkx_nodes(G, pos=pos, node_color=rgba_colors)
print(rgba_colors)

我不确定为什么会这样。