Graphviz 从左到右,然后从上到下的图形布局

Graphviz 从左到右,然后从上到下的图形布局,graphviz,Graphviz,给出了: (抱歉这么小:) 这是一个简单的线性图。我想有三个盒子从左到右,每个盒子内部组织从上到下。在谷歌搜索了很多次之后,我仍然不知道该怎么做 基本上,您只需将=false属性添加到连接群集之间节点的边: ac4->ex1[label=“)”,constraint=false] ex4->num1[label=“-”,constraint=false] 此属性禁止边影响连接节点的列组位置。换句话说,它添加了连接箭头,但头部和尾部的位置保持不变,就好像根本没有连接一样 但是,您将面临另一个问题

给出了:

(抱歉这么小:)


这是一个简单的线性图。我想有三个盒子从左到右,每个盒子内部组织从上到下。在谷歌搜索了很多次之后,我仍然不知道该怎么做

基本上,您只需将=false属性添加到连接群集之间节点的边:

ac4->ex1[label=“)”,constraint=false]

ex4->num1[label=“-”,constraint=false]

此属性禁止边影响连接节点的列组位置。换句话说,它添加了连接箭头,但头部和尾部的位置保持不变,就好像根本没有连接一样

但是,您将面临另一个问题-如果您的簇并排排列,您将把一个簇的底部与另一个簇的顶部连接起来,这将导致整个图中丑陋的重叠边

如果你在解决这个问题上遇到困难,请告诉我你希望如何解决这个问题,我们可以一起讨论解决方案

digraph finite_state_machine {
    size="8,5"
    rankdir=LR;
      node [shape = doublecircle]; beg, end;
      node [shape = circle];

  subgraph clusterG1 {
    label="area code";
    beg -> ac1 [ label = "(" ];
    ac1 -> ac2 [ label = "0,1,2,3,4,\n5,6,7,8,9,0" ];
    ac2 -> ac3 [ label = "0,1,2,3,4,\n5,6,7,8,9,0" ];
    ac3 -> ac4 [ label = "0,1,2,3,4,\n5,6,7,8,9,0" ];
  }

    ac4 -> ex1 [ label = ")" ];

  subgraph clusterG2 {
    label="exchange"
    ex1 -> ex2 [ label = "0,1,2,3,4,\n5,6,7,8,9,0" ];
    ex2 -> ex3 [ label = "0,1,2,3,4,\n5,6,7,8,9,0" ];
    ex3 -> ex4 [ label = "0,1,2,3,4,\n5,6,7,8,9,0" ];
  }

  ex4 -> num1 [ label = "-" ];

  subgraph clusterG3 {
    label="number"
    num1 -> num2 [ label = "0,1,2,3,4,\n5,6,7,8,9,0" ];
    num2 -> num3 [ label = "0,1,2,3,4,\n5,6,7,8,9,0" ];
    num3 -> num4 [ label = "0,1,2,3,4,\n5,6,7,8,9,0" ];
    num4 -> end [ label = "0,1,2,3,4,\n5,6,7,8,9,0" ];
  }

}