请考虑以下代码:
digraph G {
node [shape=plaintext]
a [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD ID="first" BGCOLOR="gray">first</TD></TR>
<TR><TD ID="second" PORT="f1">second</TD></TR>
<TR><TD ID="third" PORT="f2">third</TD></TR>
</TABLE>>];
b [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD ID="first" BGCOLOR="gray">first</TD></TR>
<TR><TD ID="second" PORT="f1">second</TD></TR>
<TR><TD ID="third" PORT="f2">third</TD></TR>
</TABLE>>];
a:first -> b:first;
}
我得到了相当多的警告:
laci@nitehawk ~ $ dot records.gv -T pdf > records.pdf
Warning: Illegal attribute ID in <TD> - ignored
Warning: Illegal attribute ID in <TD> - ignored
Warning: Illegal attribute ID in <TD> - ignored
in label of node a
Warning: Illegal attribute ID in <TD> - ignored
Warning: Illegal attribute ID in <TD> - ignored
Warning: Illegal attribute ID in <TD> - ignored
in label of node b
Warning: node a, port first unrecognized
Warning: node b, port first unrecognized
答案 0 :(得分:8)
您只需使用PORT
代替ID
,然后使用边缘定义,如示例所示。
<TD PORT="first" BGCOLOR="gray">first</TD>
ID
的目的是下游使用,所以除非您使用SVG输出并在其他地方重用id,否则它们可能并不真正有用。
关于警告,我没有使用graphviz 2.28。如果您使用旧版本的graphviz,我建议您更新。
答案 1 :(得分:8)
为了完整起见,这里是实际工作的完整来源:
digraph G {
node [shape=plaintext]
a [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD PORT="c" BGCOLOR="gray">first</TD></TR>
<TR><TD PORT="d">second</TD></TR>
<TR><TD PORT="e">third</TD></TR>
</TABLE>>];
b [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD PORT="c" BGCOLOR="gray">first</TD></TR>
<TR><TD PORT="d">second</TD></TR>
<TR><TD PORT="e">third</TD></TR>
</TABLE>>];
a:c -> b:c;
}