2017-04-06 41 views
0

我想通過節點屬性的值爲圖中的節點添加顏色,對於屬性的特定值,我想應用漸變。這與我所看到的(許多!)其他響應不同,它旨在爲圖中所有節點的matplotlib cmap(例如cmap = plt.get_cmap('Greens'))向節點添加顏色。我想將一種顏色應用於一種類型的節點,並將顏色貼圖應用於另一種類型的節點。將顏色應用到特定節點網絡x

這是我到目前爲止嘗試過的。我認爲這是失敗的,因爲我試圖將一個字符串(例如'黃色')和rgba值(例如cmap(dict_1[node]))添加到color_map,然後我使用node_color參數nx.draw()

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

嗯,我找到了解決方案。

我找到了幫助here,herehere

我改變了elif語句以使用我修改的新函數:convert_to_hex,並且將輸出放入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)