2016-06-24 7 views
2

У меня есть graph_tool.Graph генерироваться следующим образом:Как использовать категориальные свойства вершин и краев для рисования цветов в графическом инструменте?

import random 
import graph_tool.all as gt 

G = gt.Graph() 

# Add a categorical property 
cprop = G.new_vertex_property('string') 
G.vertex_properties['type'] = cprop 

# Add some verticies with alternating properties 
for idx in range(10): 
    v = G.add_vertex() 
    G.vp['type'][v] = 'even' if idx % 2 == 0 else 'odd' 

# Add some edges 
for idx in range(20): 
    src = random.randint(0,9) 
    dst = random.randint(0,9) 
    G.add_edge(G.vertex(src), G.vertex(dst)) 


gt.graph_draw(G, vertex_color=cprop) 

(довольно очевидно) ошибка значения:

ValueError: to_rgba: Invalid rgba arg "even" 
to_rgb: Invalid rgb arg "even" 
could not convert string to float: even 

Я предпочел бы не иметь, чтобы настроить собственные цветовые карты и как и затем сопоставить эти имена свойств с цветом, есть ли простой способ сопоставить категориальные значения с цветами (например, что-то похожее на prop_to_size)?

Update

Ну, к сожалению, даже простая карта не работает. Я пытался что-то вроде этого:

cmap: {"even": "#9b59b6", "odd": "#3498db"} 
vcolor = G.vp['type'] 
vcolor.a = map(lambda c: cmap[c], vcolor.a) 

gt.grapgh_draw(G, vertex_color=vcolor) 

Но новая ошибка:

ValueError: Cannot get array for value type: string 

Так что даже мое ранее простое предложение не работает.

ответ

0

Возможно, я не совсем понял, что вы пытались сделать. Если вы хотите установить RGB-значения для красок, например, вы можете сделать;

#Add a property map 
edge_color = G.new_edge_property('vector<double>') 
G.edge_properties['edge_color']=edge_color 

#Color your edges 
for e in G.edges(): 
    edge_color[e] = (r/255.0, g/255.0, b/255.0, alpha) 

Где R, G, B ваши значения RGB, между 0,0 и 255,0 и альфа составляет от 0,0 до 1,0

+0

У меня есть свойство, которое уже имеет категориальные значения в нем; Я бы хотел, чтобы эти категориальные значения (или даже непрерывные) были окрашены таким же образом, как и размеры в графическом инструменте. Я предполагаю, что вы говорите, что мне приходится вручную устанавливать каждый отдельный цвет? – bbengfort

 Смежные вопросы

  • Нет связанных вопросов^_^