2017-02-26 45 views
2

我有我创造,我希望出现在一个特定的顺序子簇点文件,让我们说我有这样的:如何在使用点时对子图簇进行排序?

digraph G { 
    splines=true; 
    sep="+25,25"; 
    overlap=scalexy; 
    nodesep=0.6; 
    subgraph cluster_2 { 
     label="ADD_MORE_PROBLEMS"; 
     subgraph cluster_3 { 
      label="pattern"; 
      N1 [label="problem"]; 
     } 
     subgraph cluster_4 { 
      label="replacement"; 
      N2 [label="problem"]; 
      N3 [label="problem"]; 
     } 
    } 
} 

它创建:

output from dot

怎么办我确保“模式”出现在“替换”的左侧(我可能有任意数量的子图)。

+0

只是澄清一点,在文件中有几个顶级集群,而那些实际上是按照预期从左到右显示的。 –

+1

颠倒你的内部集群的顺序似乎给你想要的数字。更一般地说,子图似乎首先出现在代码中出现的左侧的右侧。 – user20650

+1

谢谢。最终我也想要嵌套的子图和事情开始失控。我结束了渲染每个子图,然后按照正确的顺序合成单个图像。 –

回答

0

我不能给和回答,但可以提供一些澄清。强制布局的常用方法是引入隐藏边。在这种情况下,它不起作用。

如果没有嵌套群集,您可以使用rank=same强制连接边到同一级别。然后,一个看不见的边N1 -> N2 [style = invis]会强制节点进入正确的顺序。

但是,使用rank约束节点会破坏集群成员资格并阻止该方案工作。

修改的图显示结果。可能没有一个通用的解决方案。

digraph G { 
    splines=true; 
    sep="+25,25"; 
    overlap=scalexy; 
    nodesep=0.6; 
    subgraph cluster_2 { 
     label="ADD_MORE_PROBLEMS"; 
     subgraph cluster_3 { 
      label="pattern"; 
      N1 [label="problem 1"]; 
     } 
     subgraph cluster_4 { 
      label="replacement"; 
      N2 [label="problem 2"]; 
      N3 [label="problem 3"]; 
     } 
     // Introduce hidden edge (shown dashed) 
     N1 -> N2 [style = dashed]; 
     // Force nodes to remain at same rank 
     { rank = same; N1; N2; } 
    } 
} 

Constrained luster ordering

0

集群是奇数情况下,只需在代码排序,使差的大部分(如果不是全部相当)之一。如果我们简单地对您的代码重新排序,请执行以下操作:

digraph G { 
    splines=true; 
    sep="+25,25"; 
    overlap=scalexy; 
    nodesep=0.6; 
    subgraph cluster_2 { 
     label="ADD_MORE_PROBLEMS"; 
     subgraph cluster_4 { 
      label="replacement"; 
      N2 [label="problem"]; 
      N3 [label="problem"]; 
     } 
     subgraph cluster_3 { 
      label="pattern"; 
      N1 [label="problem"]; 
     } 
    } 
} 

使所有区别。 The "ADD_MORE_PROBLEMS" cluster contains both the "pattern" cluster and the "replacement" cluster. The "pattern" cluster is to the left of the "replacement" cluster. The "pattern" cluster contains a single node, labeled 'problem'. The "replacement" cluster contains two nodes, both labeled 'problem'.

现在,可能会失败,在这种情况下,设置不可见边是最常见的解决方案之一。

相关问题