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

How can I connect graphviz nodes that are in records using pygraphviz for dot?

这是我在通过 pygraphviz 与 dot 交互时偶然发现的问题。 我正在通过标签创建记录,但我想知道如何连接记录中的端口而不是记录节点本身。

在点中它应该看起来像这样:

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

找到解决办法: 可以使用边的 headporttailport 属性。 例如

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

阅读更多信息,例如:https://graphviz.gitlab.io/_pages/doc/info/attrs.html#d:headport

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

假设两个结构 'a00' 和 'a01' 具有字段 'f0'、'f1' 和 'f2','tailport' 和 'headport' 边缘属性确实可以用于link 不同的领域

例如,对于 linking 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')