使用点时如何对子图簇进行排序?
How do I order subgraph clusters when using dot?
我有一个点文件,我在其中创建了我希望以特定顺序出现的子图簇,假设我有这个:
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"];
}
}
}
创建:
如何确保 "pattern" 出现在 "replacement" 的左侧(我可能有任意数量的子图)。
我无法给予和回答,但可以提供一些说明。强制布局的常用方法是引入隐藏边。在这种情况下,它不起作用。
如果没有嵌套簇,您可以使用rank=same
将连接的边强制到同一层。然后,一条不可见的边 N1 -> N2 [style = invis]
会强制节点进行正确的排序。
但是,使用等级约束节点会破坏集群成员资格并阻止该方案工作。
修改后的图表显示了结果。可能没有通用的解决方案。
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; }
}
}
集群是一种奇怪的情况,其中仅代码中的排序就造成了大部分(如果不是全部)差异。如果我们像这样简单地重新排序您的代码:
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"];
}
}
}
这一切都不同了。
现在,这可能会失败,在这种情况下,设置不可见边缘是更常见的解决方案之一。
我有一个点文件,我在其中创建了我希望以特定顺序出现的子图簇,假设我有这个:
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"];
}
}
}
创建:
如何确保 "pattern" 出现在 "replacement" 的左侧(我可能有任意数量的子图)。
我无法给予和回答,但可以提供一些说明。强制布局的常用方法是引入隐藏边。在这种情况下,它不起作用。
如果没有嵌套簇,您可以使用rank=same
将连接的边强制到同一层。然后,一条不可见的边 N1 -> N2 [style = invis]
会强制节点进行正确的排序。
但是,使用等级约束节点会破坏集群成员资格并阻止该方案工作。
修改后的图表显示了结果。可能没有通用的解决方案。
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; }
}
}
集群是一种奇怪的情况,其中仅代码中的排序就造成了大部分(如果不是全部)差异。如果我们像这样简单地重新排序您的代码:
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"];
}
}
}
这一切都不同了。
现在,这可能会失败,在这种情况下,设置不可见边缘是更常见的解决方案之一。