Graphviz:如何为不同集群中的节点赋予相同的等级
Graphviz: how to give same rank to nodes in different clusters
我正在尝试为两个不同集群中的两个节点赋予相同的等级,以便使点在同一级别显示它们。特别是在这个例子中,我希望节点 a4 和 b3 处于同一级别。
这是代码:
digraph G {
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
a0 -> a1 -> a2 -> a3 -> a4;
label = "process #1";
}
subgraph cluster_1 {
node [style=filled];
b0 -> b1 -> b2 -> b3;
label = "process #2";
color=blue
}
start -> a0;
start -> b0;
a1 -> b3;
b2 -> a3;
a4 -> end;
b3 -> end;
// {rank=same; a4; b3;}
start [shape=Mdiamond];
end [shape=Msquare];
}
我尝试添加行 {rank=same; a4; b3;}
,但这只会弄乱集群,因为节点 a4 和 b3 从它们各自的集群中删除了。我也尝试添加不可见节点,但它们也以错误的方式修改了集群。
知道如何解决这个问题吗?
本质上,您想跳过 b
集群中的一个级别;你只能通过以正确的方式引入一个不可见的节点来做到这一点。我希望我用这段代码理解你的观点:
digraph G {
start[ shape=Mdiamond ];
end[ shape=Msquare ];
bx[ shape = point, width = 0.01 ]; // invisible node
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
a0 -> a1 -> a2 -> a3 -> a4;
label = "process #1";
}
subgraph cluster_1 {
node [style=filled];
b0 -> b1;
b1 -> b2;
b2 -> bx[ dir = none ]; // connecting inv node without arrow
bx -> b3; // continue normally
label = "process #2";
color=blue
}
start -> a0;
start -> b0;
a1 -> b3;
b2 -> a3;
a4 -> end;
b3 -> end;
}
这给了你
我正在尝试为两个不同集群中的两个节点赋予相同的等级,以便使点在同一级别显示它们。特别是在这个例子中,我希望节点 a4 和 b3 处于同一级别。 这是代码:
digraph G {
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
a0 -> a1 -> a2 -> a3 -> a4;
label = "process #1";
}
subgraph cluster_1 {
node [style=filled];
b0 -> b1 -> b2 -> b3;
label = "process #2";
color=blue
}
start -> a0;
start -> b0;
a1 -> b3;
b2 -> a3;
a4 -> end;
b3 -> end;
// {rank=same; a4; b3;}
start [shape=Mdiamond];
end [shape=Msquare];
}
我尝试添加行 {rank=same; a4; b3;}
,但这只会弄乱集群,因为节点 a4 和 b3 从它们各自的集群中删除了。我也尝试添加不可见节点,但它们也以错误的方式修改了集群。
知道如何解决这个问题吗?
本质上,您想跳过 b
集群中的一个级别;你只能通过以正确的方式引入一个不可见的节点来做到这一点。我希望我用这段代码理解你的观点:
digraph G {
start[ shape=Mdiamond ];
end[ shape=Msquare ];
bx[ shape = point, width = 0.01 ]; // invisible node
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
a0 -> a1 -> a2 -> a3 -> a4;
label = "process #1";
}
subgraph cluster_1 {
node [style=filled];
b0 -> b1;
b1 -> b2;
b2 -> bx[ dir = none ]; // connecting inv node without arrow
bx -> b3; // continue normally
label = "process #2";
color=blue
}
start -> a0;
start -> b0;
a1 -> b3;
b2 -> a3;
a4 -> end;
b3 -> end;
}
这给了你