Edge colors in graphviz_draw

Hi and seasons greetings to everybody!

I am displaying graphs with graphviz_draw

To obtain a different color for every type of vertex I use argument

vcolor=g.vp["typev"]

where the vertex property "typev" is of type int, it works just fine

My problem is with edge colors: I have an edge property called g.ep["typee"] but it is of type vector<short>, in fact it is a list of three elements and it is the second one that I need to define the color of every edge.

I tried

ecolor=g.ep["typee"][1]

and it didn't worked (this was predictable since one has to apply g.ep["typee"] to an edge first and then take the second element to get an integer). I also tried

ecolor=lambda x: g.ep["typee"][x][1]

and

ecolor=(lambda x: g.ep["typee"][x][1])

none of them worked. How can I obtain what I need?

Thanks in advance

Yannis

attachment.html (2.89 KB)

You need to create a new property map of the correct type. I.e.

    ecolor = g.new_edge_property("int")
    for e in g.edges:
        ecolor[e] = g.ep["typee"][e][1]
    graphviz_draw(g, ecolor=ecolor)

Alternatively, you may use "ungroup_vector_property()":

    ecolor = ungroup_vector_property(g.ep["typee"], [1])[0]
    graphviz_draw(g, ecolor=ecolor)

Best,
Tiago

Thanks for the quick reply but it didn't worked.

Alternatively, you may use "ungroup_vector_property()":

   ecolor = ungroup_vector_property(g.ep["typee"], [1])[0]
   graphviz_draw(g, ecolor=ecolor)

I got the following error message:

Traceback (most recent call last):
  File "build-graph.py", line 595, in <module>
    ecolor = ungroup_vector_property(g.ep["typee"], [1])[0]
  File "/usr/local/lib/python2.7/site-packages/graph_tool/__init__.py", line 1035, in ungroup_vector_property
    _check_prop_vector(vprop, name="vprop", scalar=False)
  File "/usr/local/lib/python2.7/site-packages/graph_tool/__init__.py", line 915, in _check_prop_vector
    (" floating" if floating else "")))
ValueError: property map 'vprop' is not of vector type.

You said your property was of type "vector<short>". This error message
says it isn't.

Best,
Tiago