sha*_*ter 4 dot alignment graphviz
我给Dot添加了以下输入:
digraph G {
subgraph cluster1 {
fontsize = 20;
label = "Group 1";
A -> B -> C -> D;
style = "dashed";
}
subgraph {
O [shape=box];
}
subgraph cluster2 {
fontsize = 20;
label = "Group 2";
Z -> Y -> X -> W [dir=back];
style = "dashed";
}
D -> O [constraint=false];
W -> O [constraint=false, dir=back];
}
Run Code Online (Sandbox Code Playgroud)
它产生:
如何对齐节点O
以使其具有D
与W
?相同的等级?也就是说,图表看起来像:
A Z
| |
B Y
| |
C X
| |
D-O-W
Run Code Online (Sandbox Code Playgroud)
添加
{ rank=same; D; O; W; }
Run Code Online (Sandbox Code Playgroud)
产生错误
Warning: D was already in a rankset, ignored in cluster G
Warning: W was already in a rankset, ignored in cluster G
Run Code Online (Sandbox Code Playgroud)
我想我可以通过在子图中添加不可见的节点和边来破解它O
,但我想知道我是否缺少一些Dot魔法.
mar*_*pet 13
您可以使用方法rankdir=LR
和constraint=false
集群内的边缘使用:
digraph G {
rankdir=LR;
subgraph cluster1 {
fontsize = 20;
label = "Group 1";
rank=same;
A -> B -> C -> D [constraint=false];
style = "dashed";
}
subgraph cluster2 {
fontsize = 20;
label = "Group 2";
rank=same;
Z -> Y -> X -> W [dir=back, constraint=false];
style = "dashed";
}
O [shape=box];
D -> O -> W;
}
Run Code Online (Sandbox Code Playgroud)
这不是点魔术:-),但它达到了这个目的:
使用不可见节点进行黑客攻击也有效:
digraph G {
subgraph cluster1 {
fontsize = 20;
label = "Group 1";
A -> B -> C -> D;
style = "dashed";
}
subgraph {
O1[style=invis];
O2[style=invis];
O3[style=invis];
O [shape=box];
O1 -> O2 -> O3 -> O [style=invis];
}
subgraph cluster2 {
fontsize = 20;
label = "Group 2";
Z -> Y -> X -> W [dir=back];
style = "dashed";
}
edge[constraint=false];
D -> O -> W;
}
Run Code Online (Sandbox Code Playgroud)
结果几乎相同:
归档时间: |
|
查看次数: |
8142 次 |
最近记录: |