2017-04-06 1 views
0

그래프의 노드를 노드 속성의 값으로 채색하고 속성의 특정 값에 그라데이션을 적용하고 싶습니다. 이것은 그래프에서 모든 노드에 대해 matplotlib cmap (예 : cmap = plt.get_cmap('Greens'))의 노드에 색상을 추가하는 것을 목표로 한 (다른 많은 응답!) 응답과 다릅니다. 한 유형의 노드에 한 가지 색상을 적용하고 다른 유형의 노드에 색상 맵을 적용하고 싶습니다.특정 노드 네트워크에 색 적용 x

여기까지 제가 시도한 내용입니다. 나는 문자열 (예 : '노랑')과 rgba 값 (예 : cmap(dict_1[node]))을 color_map에 추가하려고 시도했기 때문에이 오류가 발생하지 않는다고 생각합니다. 의 node_color 매개 변수를 사용합니다. 난 단지 현재의 형태로 color_map에 이름으로 색상을 추가 할 수 있지만하지 않을 경우

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 방법은 잘 작동합니다.

답변

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) 
관련 문제