如何使用pygraphviz连接记录中的graphviz节点?

时间:2016-08-14 20:22:07

标签: python graphviz pygraphviz

我正在使用pygraphviz与dot / graphviz进行交互。我正在通过标签创建记录,但我想知道如何连接记录中的端口而不是记录节点本身。

在点中,它看起来像这样:

a00 [shape = "record" label="{{RecordThing1}|{<1>A|<2>B|<3>C|<4>D|<5>E|<6>F}}"];
a01 [shape = "record" label="{{RecordThing2}|{<1>A|<2>B|<3>C|<4>D|<5>E|<6>F}}"];
a00:1 -> a01:1

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方案:可以使用边缘的headport和tailport属性。 e.g。

agraph.add_node('a00', 'a01', tailport=1, headport=1)

阅读详情:http://www.graphviz.org/content/attrs#aheadport

答案 1 :(得分:0)

tortal发布的解决方案代码中有一个小错误:需要使用add_edge(而不是add_node)。

假设两个结构'a00'和'a01'的字段分别为'f0','f1'和'f2',则'tailport'和'headport'边缘属性确实可以用于链接不同的字段

例如,用于将a00:f1与a01:f0链接

from pygraphviz import AGraph
g = AGraph()
g.add_node("a00", label="<f0> text | {<f1> text | <f2> text}", shape="record")
g.add_node("a01", label="<f0> text | {<f1> text | <f2> text}", shape="record")
g.add_edge('a00', 'a01', tailport='f1', headport='f0')