2
我有一個graph_tool.Graph產生如下:如何使用Vertices和Edges的分類屬性在圖形工具中繪製顏色?
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
)?
更新
好了,遺憾的是,即使一個簡單的地圖不起作用。我想是這樣的:
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
所以,即使我以前的簡單的建議是行不通的。
我有已經在它具有分類值的屬性;我希望這些分類值(甚至是連續分類)的顏色與它們在圖形工具中的大小相同。我想你說的是我自己手動設置每一種顏色? – bbengfort