2017-04-06 13 views
0

グラフのノードの色をノード属性の値で、色の属性の値としてグラデーションを適用したいとします。これは、グラフのすべてのノードについて、matplotlib cmap(たとえばcmap = plt.get_cmap('Greens'))のノードに色を追加することを目指している、私が見た(多くの!)他の応答とは異なります。 1つのタイプのノードに1つのカラーを適用し、別のタイプのノードにカラーマップを適用したいと思います。特定のノードのネットワークに色を適用する

これまで私がこれまでに試したことは次のとおりです。文字列(たとえば「黄色」)とrgba値(たとえばcmap(dict_1[node]))をcolor_mapに追加しようとしているため、これは失敗していると思います。のnode_colorパラメータに使用します。

import networkx as nx 
import matplotlib.pyplot as plt 

color_map = [] 
cmap = plt.get_cmap('Greens') 

for node in g: 
    if node in list_1: 
     color_map.append('yellow') 
    elif node in list_2: 
     rgba = cmap(dict_1[node]) 
     color_map.append(rgba*-1) 

nx.draw(g, node_color = color_map, node_size = 75) 

私だけではなく、現在の形で、color_mapに名前によって色を追加するときcolor_map方法はうまく動作します。

答えて

1

まあ、解決策が見つかりました。

助けが見つかりましたherehere、およびhereです。

私は変更された新しい関数:convert_to_hexを使用するようにelif文を変更し、outputをcolor_mapに入れて、期待通りに動作します。

def convert_to_hex(rgba_color) : 
    red = int(rgba_color[0]*255) 
    green = int(rgba_color[1]*255) 
    blue = int(rgba_color[2]*255) 
    return '#%02x%02x%02x' % (red, green, blue) 

import networkx as nx 
import matplotlib.pyplot as plt 

color_map = [] 
cmap = plt.get_cmap('Greens') 

for node in g: 
    if node in list_1: 
     color_map.append('yellow') 
    elif node in list_2: 
     rgba = cmap(dict_1[node]) 
     color_map.append(convert_to_hex(rgba)) 


nx.draw(g, node_color = color_map, node_size = 75) 
関連する問題