Graphviz 如何使子图包含形状?

Graphviz 如何使子图包含形状?,graphviz,dot,digraphs,Graphviz,Dot,Digraphs,我有一个图表,它表示由两个较小进程组成的一个大进程。每个较小的进程都由一个子图表示。但是,当我将其中一个子流程的结尾(比如“一”)连接到另一个子流程的开头(“两”),另一个流程(“两”)的开头形状与“一”的结尾在同一集群中。如何使箭头从一的末尾指向二的开头,但将二的起始形状保持在其簇内 digraph BigProcess { graph [ label="Some big process" ] subgraph clusterSubProcess1 { graph [

我有一个图表,它表示由两个较小进程组成的一个大进程。每个较小的进程都由一个子图表示。但是,当我将其中一个子流程的结尾(比如“一”)连接到另一个子流程的开头(“两”),另一个流程(“两”)的开头形状与“一”的结尾在同一集群中。如何使箭头从一的末尾指向二的开头,但将二的起始形状保持在其簇内

digraph BigProcess {
   graph [ label="Some big process" ]

   subgraph clusterSubProcess1 {
      graph [ label="Subprocess one", color="red" ]

      start1_1 -> start1_2;
      start1_2 -> start1_3a;
      start1_2 -> start1_3b;
      start1_3a -> start1_4;
      start1_3b -> start1_5;
      start1_4 -> start1_1;
      start1_5 -> start2_1;

   }

   subgraph clusterSubProcess2 {
      graph [ label="Subprocess two", color="blue" ]

      start2_1 -> start2_2;
      start2_2 -> start2_3a;
      start2_2 -> start2_3b;
      start2_3a -> start2_4;
      start2_3b -> start2_5;
      start2_4 -> start2_1;
      start2_5 -> end1;

   }
}
这将导致以下结果,其中我确实希望start2_1是蓝色边界框中的顶部节点


发生这种情况是因为行
start1\u 5->start2\u 1正在该子图中定义
start2\u 1
。您需要在第一个子图中定义
start1_5
,但在第二个子图中定义
start2_1
之前,将其保持为未连接状态

digraph BigProcess {
   graph [ label="Some big process" ]

   subgraph clusterSubProcess1 {
      graph [ label="Subprocess one", color="red" ]

      start1_1 -> start1_2;
      start1_2 -> start1_3a;
      start1_2 -> start1_3b;
      start1_3a -> start1_4;
      start1_3b -> start1_5;
      start1_4 -> start1_1;
      start1_5;

   }

   subgraph clusterSubProcess2 {
      graph [ label="Subprocess two", color="blue" ]

      start2_1 -> start2_2;
      start2_2 -> start2_3a;
      start2_2 -> start2_3b;
      start2_3a -> start2_4;
      start2_3b -> start2_5;
      start2_4 -> start2_1;
      start2_5 -> end1;

   }

   //Now connect the nodes in the two different subgraphs
   start1_5 -> start2_1;
}

除了边之外,您是否还尝试过声明节点?我可能会尝试不在集群中放置边,而是放置节点。(我认为,边缘也可以在集群之外声明。)。对不起,我不在我的电脑前,或者我可以给出一个真实的答案。谢谢!现在看起来很明显,但我已经多年没有使用DOT/GraphViz了,我只是重新开始,因为您已经在
start1\u 3b->start1\u 5中定义了该节点行: