在 graphviz 中订购流程图

Ordering flowchart in graphviz

我想制作的图表是这样一个从左到右的流程图,顶部是一个主流程,下面是一系列的东西分组,在不同的点输入和输出,比如这个: (尽管这是一个虚拟示例,我想要从顶部代码框进出很多东西,这就是水平布局比默认布局效果更好的原因

问题是这是用 powerpoint 制作的...

我可以用这个得到一些接近的东西:

digraph example {
  
  graph [
    rankdir = LR
  ]
  
  subgraph cluster_code {
    label = "code";
    A;
    B;
    C;
    D;
  }

  subgraph cluster_data {
    label = "data";
    data_1;
    data_2;
  }
  
  subgraph cluster_source {
    label = "source"
    source_1;
    source_2
  }
  
   A -> B
   B -> C
   C -> D
  
  data_1 -> A
  data_2 -> B
  A -> output_1
  output_1 -> C
  
  source_1 -> data_1
  source_2 -> data_2
  
  #{rank = same; source_2; data_2; A}
  
}

但是如果我尝试使用 {rank = same; source_2; data_2; A}sourcedata 集群置于代码集群之下(这已在上面散列,我不会重复整个代码为了 post) 的简洁性,我然后 Adata_2source_2 开箱即用。我认为这与等级和集群不能很好地协同工作有关。

关于获得类似上面第一张图的任何提示?

我是 运行 graphviz 通过 R/Rstudio 和 DiagrammeR.

您似乎想更改图表中间的“rankdir”。挺有道理的,但是Graphviz不支持。这是您的图表,使用默认值 rankdir 和使用 rank 有效更改 rankdir 的未充分记录的能力=same 在一个子图中。它还会反转边缘箭头的方向 - 一个错误,但它有效。

digraph example {
  node [width=1.5]

  subgraph cluster_code {
    label = "code";
    {rank=same 
    A -> B -> C -> D    
    }
  }

  subgraph cluster_data {
    label = "data";
    data_1;
    data_2;
  }
  
  subgraph cluster_source {
    label = "source"
    source_1;
    source_2
  }
  
  A -> output_1
  output_1 -> C
  
  edge[dir=back minlen=2]  // minlen makes (rank) space
  A -> data_1  // -> A
  A -> data_2  // -> A
  
  edge[dir=back minlen=1]
  data_1 -> source_1 // -> data_1
  data_2 -> source_2 // -> data_2
}

给这个: