警告节点无法识别的graphviz

时间:2017-09-20 18:03:30

标签: graphviz

我使用graphviz绘制节点

每个节点由长字节字符串标识,如

J0b'\xee\x07\x9a\xbe\xd8\xa0\x8c@\nE\xc8\xcfwTT\x8a\x97\xad_\x9d\x0b\x85\x82\xb8\xe4, port 6\x0f\x17\xe1\xfbX'

所以创建节点看起来像这样

g.node("J0b'\xee\x07\x9a\xbe\xd8\...", label="first node")

然后我收到警告

Warning: node J0b'\xee\x07\x9a\xbe\xd8\xa0\x8c@\nE\xc8\xcfwTT\x8a\
x97\xad_\x9d\x0b\x85\x82\xb8\xe4, port 6\x0f\x17\xe1\xfbX' unrecognized

我一直试图找出错误在线的端口。奇怪的是,只有少数节点出现此错误,其他节点正确打印

所以结果节点看起来像这样

enter image description here

而不是"第一个节点"它打印出来" J0b' \ xee \ x07 \ x9a \ xbe \ xd8 ..."

1 个答案:

答案 0 :(得分:2)

dot language grammar表示以下节点ID:

  

ID 是以下之一:

     
      
  • 任何字母([a-zA-Z \ 200- \ 377])字符串,下划线   ('_')或数字([0-9]),不以数字开头;
  •   
  • 数字[ - ]?(。[0-9] + | [0-9] +(。[0-9] *)?);
  •   
  • 任何双引号字符串(“...”)可能包含转义引号('“)1;
  •   
  • HTML字符串(< ...>)。
  •   

由于示例中的ID还包含逗号和空格等字符,因此ID应该是双引号。

例如,J0b'\xe4, port 6\x0f'用作id时应为"J0b'\xe4, port 6\x0f'"(带双引号)。

此外,在使用库创建图形时,必须使用库语言的正确转义序列对这些id进行转义。

因此,

g.node(""J0b'\xe4, port 6\x0f'"", "label")应该类似于g.node("\"J0b'\\xe4, port 6\\x0f'\"", "label")