2017-07-06 14 views
0

各ノードに異なるアルファを設定したいと思います。ノードごとに異なる色を設定するのは簡単ですが、アルファ値は1つの値を除いてのみです。誰でもこれを行う方法を知っていますか?networkx:各ノードに異なるアルファを設定しますか?

(私の目標は、赤青から色のグラデーションを有することである。値は、それが青色だと上記の場合にはRedの中間点を下回っている場合。アルファは勾配を設定します。)

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

答えて

1

アルファ値色ではなく透明度を制御します。

すでにnode_colorパラメータを指定している場合、ノードは着色されます。アルファの代わりにそれらの強度に基づいて青から赤に変えたい場合は、colormap.を使用します。「地震」は赤から青に変わります。

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

編集:私はこれに深く掘るしようとしているいくつかの奇妙な行動を偶然見つけ。私はnetworkxのプロットがmatplotlibのscatterプロットのように振る舞い、rgba色を受け入れて、特定の色と透明度を指定できると思っていたでしょう。 Iは、RGBA色を表すために4組のアレイとdraw_networkx_nodesを呼び出す場合には、これは、色や透明度を変化させたいくつかの点をプロット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) 

なぜこれが起こっているのか分かりません。

+0

アルファコントロール透明度と透明度が色の見え方に影響します:) – Leigh

+0

'rgba_colors'は変更されていますか?それは私のために変わるようには見えません。 – Joel

+0

@Joelはい、変更されています。私は2D numpy配列の代わりにタプルのリストを使うことでこれを防ぐことができますが、結果のグラフは同じです。しかし、私は古いバージョンのnetworkx(1.9.1)とmatplotlib(1.4.2)を使用しています。 –

関連する問題