【问题标题】:GraphViz - How to make subgraph contain shape?GraphViz - 如何使子图包含形状?
【发布时间】:2014-04-18 22:42:59
【问题描述】:

我有一个图表,它代表一个由两个较小进程组成的大进程。每个较小的过程都由一个子图表示。但是,当我将其中一个子进程(假设“一个”)的结尾连接到另一个(“两个”)的开头时,另一个进程(“两个”)的起始形状最终与“一”的结尾。如何让箭头从一个的末尾指向两个的开头,但将两个的起始形状保持在其簇内?

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 成为蓝色有界框内的顶部节点。

【问题讨论】:

  • 除了边之外,您是否尝试过声明节点?我可能会尝试不将边缘放入集群,而是将节点放入。 (我认为,边缘也可以在集群之外声明。)。对不起,我不在我的电脑前,或者可以给出真正的答案。

标签: graphviz dot digraphs


【解决方案1】:

这是因为第一个子图中的行 start1_5 -> start2_1; 定义了该子图中的 start2_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_5;,因为您已经在start1_3b -> start1_5; 行中定义了该节点:
猜你喜欢
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
相关资源
最近更新 更多