Graphviz 点垂直对齐节点
Graphviz dot align nodes vertically
我有以下 graphviz 点输入文件:
digraph structs {
rankdir = LR;
node [shape=record];
hashTable [label="<f0>0|<f1>1|<f2>2|<f3>3|<f4>4|<f5>5|<f6>6|<f7>7|<f8>8"];
node_1_0 [label="<f0> one|<f1> two |<f2> three"];
node_1_1 [label="<f0> un |<f1> deux|<f2> trois"];
struct3 [label="<f0> einz|<f1> swei|<f2> drei"];
hashTable:f1 -> node_1_0:f0;
node_1_0:f2 -> node_1_1:f0;
hashTable:f4 -> struct3:f0;
}
渲染如下:
如何让 [one|two|three] 节点与 [un|deux|trois] 垂直对齐节点?谢谢!
编辑 在评论中澄清后:这里一条不可见的边具有很强的权重有助于保持节点对齐:
digraph structs2
{
rankdir = LR;
node [shape=record];
splines=false; // optional; gives straight lines
hashTable [label="<f0>0|<f1>1|<f2>2|<f3>3|<f4>4|<f5>5|<f6>6|<f7>7|<f8>8"];
node_1_0 [label="<f0> one|<f1> two |<f2> three" ];
node_1_1 [label="<f0> un |<f1> deux|<f2> trois"];
struct3 [label="<f0> einz|<f1> swei|<f2> drei"];
//
node_1_0 -> node_1_1[ style = invis, weight= 10 ];
// ^^^^^^^^^^^^^^^^^^^^^^^^^
hashTable:f1 -> node_1_0:f0;
node_1_0:f2 -> node_1_1:f0;
hashTable:f4 -> struct3:f0;
}
给你(我相信)你想要的:
.......
原来的回答是:
从表面上回答你的问题,这可以通过将它们放在同一等级来快速实现:
digraph structs
{
rankdir = LR;
node [shape=record];
hashTable [label="<f0>0|<f1>1|<f2>2|<f3>3|<f4>4|<f5>5|<f6>6|<f7>7|<f8>8"];
node_1_0 [label="<f0> one|<f1> two |<f2> three"];
node_1_1 [label="<f0> un |<f1> deux|<f2> trois"];
struct3 [label="<f0> einz|<f1> swei|<f2> drei"];
{rank = same; node_1_0 node_1_1 }
hashTable:f1 -> node_1_0:f0;
node_1_0:f2 -> node_1_1:f0;
hashTable:f4 -> struct3:f0;
}
屈服
我有以下 graphviz 点输入文件:
digraph structs {
rankdir = LR;
node [shape=record];
hashTable [label="<f0>0|<f1>1|<f2>2|<f3>3|<f4>4|<f5>5|<f6>6|<f7>7|<f8>8"];
node_1_0 [label="<f0> one|<f1> two |<f2> three"];
node_1_1 [label="<f0> un |<f1> deux|<f2> trois"];
struct3 [label="<f0> einz|<f1> swei|<f2> drei"];
hashTable:f1 -> node_1_0:f0;
node_1_0:f2 -> node_1_1:f0;
hashTable:f4 -> struct3:f0;
}
渲染如下:
如何让 [one|two|three] 节点与 [un|deux|trois] 垂直对齐节点?谢谢!
编辑 在评论中澄清后:这里一条不可见的边具有很强的权重有助于保持节点对齐:
digraph structs2
{
rankdir = LR;
node [shape=record];
splines=false; // optional; gives straight lines
hashTable [label="<f0>0|<f1>1|<f2>2|<f3>3|<f4>4|<f5>5|<f6>6|<f7>7|<f8>8"];
node_1_0 [label="<f0> one|<f1> two |<f2> three" ];
node_1_1 [label="<f0> un |<f1> deux|<f2> trois"];
struct3 [label="<f0> einz|<f1> swei|<f2> drei"];
//
node_1_0 -> node_1_1[ style = invis, weight= 10 ];
// ^^^^^^^^^^^^^^^^^^^^^^^^^
hashTable:f1 -> node_1_0:f0;
node_1_0:f2 -> node_1_1:f0;
hashTable:f4 -> struct3:f0;
}
给你(我相信)你想要的:
.......
原来的回答是:
从表面上回答你的问题,这可以通过将它们放在同一等级来快速实现:
digraph structs
{
rankdir = LR;
node [shape=record];
hashTable [label="<f0>0|<f1>1|<f2>2|<f3>3|<f4>4|<f5>5|<f6>6|<f7>7|<f8>8"];
node_1_0 [label="<f0> one|<f1> two |<f2> three"];
node_1_1 [label="<f0> un |<f1> deux|<f2> trois"];
struct3 [label="<f0> einz|<f1> swei|<f2> drei"];
{rank = same; node_1_0 node_1_1 }
hashTable:f1 -> node_1_0:f0;
node_1_0:f2 -> node_1_1:f0;
hashTable:f4 -> struct3:f0;
}
屈服