垂直绘制B树

Draw B-tree vertically

Is there a way to draw B-Trees on Graphviz? 建议交替 link, data, link, data, link, ... 但是,我一个节点中可能有大量数据,以至于我无法真正 space 水平输出。我正在使用一个带有来自一个角的箭头的垂直节点来模拟数据之间的箭头。

digraph {
    graph [rankdir=LR, truecolor=true, bgcolor=transparent];
    node [shape=none];
    node1 [label = <
<table>
    <tr><td port="0">Ugargeeon</td></tr>
    <tr><td port="1">103</td></tr>
</table>>];
    node1:0:se -> node2;
    node1:1:se -> node3;
    node2 [label = <
<table>
    <tr><td>Rutorshar</td></tr>
    <tr><td>17</td></tr>
    <tr><td>69</td></tr>
</table>>];
    node3 [label = <
<table>
    <tr><td>Nashmokum</td></tr>
    <tr><td>117</td></tr>
    <tr><td>135</td></tr>
</table>>];
}

给予。

第一张图片非常接近我想要的初始起点,除了初始样条指向东南方向。我编辑的第二张图片显示了我认为理想的输出应该是什么。也就是说,大致对称。全局设置 splines=line 有效,但边数越多,当它们是默认样条时,就更容易区分它们。有没有办法在 节点之间定位箭头而不 影响初始样条状态?

关闭?主要变化是使用边缘头端的端口 - 整个节点的西侧或特定单元。选择你的样条线类型,还可以画 table,严格审美。

//  
digraph {
    graph [rankdir=LR, truecolor=true, bgcolor=transparent];
    splines=false // made a guess, should work fine true or false
    node [shape=none];
    node1 [label = <
<table>
    <tr><td port="p0">Ugargeeon</td></tr>
    <tr><td port="p1">103</td></tr>
</table>>];

    node1:p0:se -> node2:w;
    //node1:p1:se -> node3:w;  // does not actually touch the node
    node1:p1:se -> node3:p1:w; // looks a bit better?
    
    node2 [label = <
<table>
    <tr><td port="p0">Rutorshar</td></tr>
    <tr><td port="p1">17</td></tr>
    <tr><td port="p2">69</td></tr>
</table>>];

    node3 [label = <
<table BORDER="0" CELLBORDER="1" cellspacing="0" >
    <tr><td port="p0">Nashmokum</td></tr>
    <tr><td port="p1">117</td></tr>
    <tr><td port="p2">135</td></tr>
</table>>];
}