I would like to use math symbols (such as ∈, ⊆ and ∡) and Greek letters into labels (vertex properties and edge properties), so that they can appear in graph-tool-made or graphviz-made graphs.
How can I use graph-tool in a Unicode-compliant way?
When I attempt to use a ∈ in a label, I get the following error message:
File "apply-rules.py", line 25
SyntaxError: Non-ASCII character '\xe2' in file apply-rules.py on line 25, but no encoding declared; see for details
When I include
# coding=utf-8
at the beginning, and when I use u"∈" in the code
then I get the following message:
Traceback (most recent call last):
File "apply-rules.py", line 474, in <module>
execfile("rules.py")
File "rules.py", line 13, in <module>
signature=['204:6', '20456:4', '2045654:4', '45654:2', '456:2', '654:2', '2:3', '4:3', '6:1']
File "apply-rules.py", line 293, in apply_edge_rule
r=att_edge(q,KNOWN[ms[0][0]],KNOWN[ms[0][5]],globals()[ms[0][3]])
File "apply-rules.py", line 352, in att_edge
g.ep['labele'][res]=str(g.vp['labelv'][a])+"_"+EDGE_LABEL[val]+"_"+str(g.vp['labelv'][b])
File "/usr/local/lib/python2.7/site-packages/graph_tool/__init__.py", line 490, in __setitem__
self.__map[key] = self.__convert(v)
File "/usr/local/lib/python2.7/site-packages/graph_tool/__init__.py", line 254, in convert
return vtype(val)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2208' in position 3: ordinal not in range(128)
So the problem is not yet how to make the symbol appear in graphviz output, but how to make the Python code run…
Traceback (most recent call last):
File "apply-rules.py", line 473, in <module>
execfile("rules.py")
File "rules.py", line 13, in <module>
signature=['204:6', '20456:4', '2045654:4', '45654:2', '456:2', '654:2', '2:3', '4:3', '6:1']
File "apply-rules.py", line 292, in apply_edge_rule
r=att_edge(q,KNOWN[ms[0][0]],KNOWN[ms[0][5]],globals()[ms[0][3]])
File "apply-rules.py", line 351, in att_edge
g.ep['labele'][res]=str(g.vp['labelv'][a])+"_"+EDGE_LABEL[val]+"_"+str(g.vp['labelv'][b])
File "/usr/local/lib/python2.7/site-packages/graph_tool/__init__.py", line 490, in __setitem__
self.__map[key] = self.__convert(v)
File "/usr/local/lib/python2.7/site-packages/graph_tool/__init__.py", line 254, in convert
return vtype(val)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2208' in position 3: ordinal not in range(128)