Graphviz 使用秩=相同时丢失x y边

Graphviz 使用秩=相同时丢失x y边,graphviz,graph-visualization,Graphviz,Graph Visualization,我正在尝试使用GraphViz可视化双链接列表。 例如: digraph List { rankdir=LR; node [shape=record]; 0 [label="{<prev> | <length> 2 | <tone> 1 | <next>}"]; 1 [label="{<prev> | <length> 1 | <tone> A | &

我正在尝试使用GraphViz可视化双链接列表。 例如:

digraph List {
    rankdir=LR;
    node [shape=record];
    0 [label="{<prev> | <length> 2 | <tone> 1 | <next>}"];
    1 [label="{<prev> | <length> 1 | <tone> A | <next>}"];
    0:<next>:c -> 1:n [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false, arrowsize=1.2];
    1:<prev>:c -> 0:s [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false, arrowsize=1.2];
}
发生GraphViz错误(
错误:丢失1 0边
)。现在,我能找到的唯一修复此错误的方法是将记录形状的节点替换为纯文本节点,并使用HTML标签创建记录形状。 我尝试过这个,但它产生了同样的错误

使用HTML标签的代码:

digraph List {
    rankdir=LR;
    node [shape=plaintext];
    0 [label=<
    <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
        <TR>
            <TD PORT="prev">     </TD>
            <TD PORT="length">2</TD>
            <TD PORT="note">1</TD>
            <TD PORT="next">     </TD>
        </TR>
    </TABLE>>];
    1 [label=<
    <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
        <TR>
            <TD PORT="prev">     </TD>
            <TD PORT="length">1</TD>
            <TD PORT="note">A</TD>
            <TD PORT="next">     </TD>
        </TR>
    </TABLE>>];
    0:next:c -> 1:n [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false, arrowsize=0.8];
    1:prev:c -> 0:s [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false, arrowsize=0.8];
}
有向图列表{
rankdir=LR;
节点[形状=纯文本];
0[标签=<
2.
1.
>];
1[标签=<
1.
A.
>];
0:next:c->1:n[箭头=V形,箭头尾巴=点,方向=两者,尾巴夹=假,箭头大小=0.8];
1:prev:c->0:s[箭头=V形,箭头尾巴=点,方向=两者,尾巴夹=假,箭头大小=0.8];
}

如果能就如何解决这个问题提出任何建议,我将不胜感激

以前的尝试如下所示:

digraph List { 
    rankdir=LR;
    node [shape=record];
    0 [label="{<prev> | <firstName> Wolfgang Amadeus | <lastName> Mozart | <instrument> Klavier | <next>}"];
    1 [label="{<prev> | <length> 1 | <tone> A | <next>}"];
    0:<next>:c -> 1:<prev> [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false, arrowsize=0.8];
    1:<prev>:c -> 0 [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false, arrowsize=0.8];
}
有向图列表{
rankdir=LR;
节点[形状=记录];
0[label=“{Wolfgang Amadeus | Mozart | Klavier |}];
1[label=“{| 1 | A |}]”;
0::c->1:[箭头=V形,箭头尾巴=点,方向=两者,尾夹=假,箭头大小=0.8];
1::c->0[箭头=V形,箭头尾巴=点,方向=两者,尾夹=假,箭头大小=0.8];
}


这两个箭头之间没有明显的区别。在节点之间获得两个不同的箭头也可以解决我的问题。

您可以在第一个节点的最后一个元素和第二个节点的第一个元素之间使用一个强(“重”)链接(一条不可见的边)对齐节点

将这一行作为最后一行添加到类似HTML的代码中(这比记录形状更灵活)

你得到了什么


这正是我想你想要的。

这正是我需要的,非常感谢!
digraph List { 
    rankdir=LR;
    node [shape=record];
    0 [label="{<prev> | <firstName> Wolfgang Amadeus | <lastName> Mozart | <instrument> Klavier | <next>}"];
    1 [label="{<prev> | <length> 1 | <tone> A | <next>}"];
    0:<next>:c -> 1:<prev> [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false, arrowsize=0.8];
    1:<prev>:c -> 0 [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false, arrowsize=0.8];
}
0:next:e -> 1:prev:w[ weight = 100, style = invis ];