graphviz - graphviz中节点的垂直对齐

标签 graphviz dot

我正在尝试制作一个图表,其中 {C1;C2} 垂直对齐。与 {A;B;C} 和 {E1;E2;E3} 相同

这是迄今为止我的代码:

digraph G{
    rankdir="LR";
    S -> C1 [label="150"];
    S -> C2 [label="130"];
    C1 -> A [label="70"];
    C1 -> B [label="80"];
    C2 -> B [label="60"];
    C2 -> C [label="70"];
    C -> B [label="10"];
    A -> E1 [label="70"];
    B -> E1 [label="80"];
    B -> D [label="70"];
    C -> E3 [label="60"];
    D -> E1 [label="40"];
    D -> E2 [label="0"];
    D -> E3 [label="30"];
    E1 -> t [label="190"];
    E2 -> t [label="0"];
    E3 -> t [label="90"];
}

这是迄今为止的结果: enter image description here

最佳答案

{ 排名 = 相同; } 是你的 friend 。我在 A、B 和 C 之间添加了隐形边缘,以使它们更紧密地结合在一起,并反转了其中一个连接,以便使 A 超过 B 超过 C 等。

digraph G
{
    rankdir="LR";
    { rank = same; C1 C2 }
    { rank = same; A -> B -> C[ style = invis ] }
    { rank = same; E1 E2 E3 }
    S -> C1 [label="150"];
    S -> C2 [label="130"];
    C1 -> A [label="70"];
    C1 -> B [label="80"];
    C2 -> B [label="60"];
    C2 -> C [label="70"];
    B -> C [dir = back, label="10"];   // to keep B above C
    A -> E1 [label="70"];
    B -> E1 [label="80"];
    B -> D [label="70"];
    C -> E3 [label="60"];
    D -> E1 [label="40"];
    D -> E2 [label="0"];
    D -> E3 [label="30"];
    E1 -> t [label="190"];
    E2 -> t [label="0"];
    E3 -> t [label="90"]; 
}

产量

enter image description here

关于graphviz - graphviz中节点的垂直对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47295225/

相关文章:

graphviz:如何防止集群覆盖 rank=source 语句

graphviz - 如何设置圆形节点样式的半径?

linux - Graphviz 中的字体质量差

Graphviz 和 Dot 以及具有数百个节点的图形。

Graphviz:将扁平但连接稀疏的图形分解为多行?

graphviz - child 在graphviz树中排序

Graphviz:xlabel 位置

形状=圆形的节点的大小

如果节点之间没有边,Graphviz 将忽略等级属性

graphviz - 在 graphviz 点有向图中,如何打破宽布局(rankdir LR)