与其他节点具有相同等级的graphviz群集
我试图创建一个图,我显式地指定了许多节点的秩,并指定了集群。以下代码生成我想要的图形类型:与其他节点具有相同等级的graphviz群集,graphviz,dot,Graphviz,Dot,我试图创建一个图,我显式地指定了许多节点的秩,并指定了集群。以下代码生成我想要的图形类型: digraph { rankdir=LR subgraph cluster0 { "MATH 208" "MATH 211" graph [rankdir=LR, style="rounded,filled", color=gray] } subgraph year1 { subgraph {
digraph {
rankdir=LR
subgraph cluster0 {
"MATH 208"
"MATH 211"
graph [rankdir=LR, style="rounded,filled", color=gray]
}
subgraph year1 {
subgraph {
"MATH 100"
"MATH 110"
graph [rankdir=LR, rank=same]
}
subgraph {
"MATH 101"
"MATH 211"
"MATH 208"
graph [rankdir=LR, rank=same]
}
graph [rankdir=LR]
}
subgraph year2 {
subgraph {
"MATH 205"
"PHIL 203"
graph [rankdir=LR, rank=same]
}
graph [rankdir=LR]
}
subgraph year3 {
subgraph {
"MATH 311"
"MATH 312"
"MATH 375"
graph [rankdir=LR, rank=same]
}
graph [rankdir=LR]
}
subgraph year4 {
subgraph {
"MATH 447"
"MATH 412"
graph [rankdir=LR, rank=same]
}
graph [rankdir=LR]
}
"MATH 100" -> "MATH 101"
"MATH 100" -> "MATH 208"
"MATH 101" -> "MATH 205"
"MATH 110" -> "MATH 311"
"MATH 211" -> "MATH 311"
"MATH 110" -> "MATH 312"
"MATH 211" -> "MATH 312"
"PHIL 203" -> "MATH 375"
"MATH 110" -> "MATH 447"
"MATH 211" -> "MATH 447"
"MATH 311" -> "MATH 412"
"MATH 312" -> "MATH 412"
}
这将生成一个正确的图形,其中“MATH 211”与“MATH 101”的级别相同,但graphviz会发出警告
Warning: MATH 208 was already in a rankset, ignored in cluster pruned
Warning: MATH 211 was already in a rankset, ignored in cluster pruned
如果我从year1子图中删除“MATH 211”和“MATH 208”,graphviz将不再抱怨,但结果图中的集群不再与“MATH 101”处于同一级别(为什么会…):
有没有办法重新排列/重新排序我的点文件,以生成第一个图形,但没有任何警告?或者指定某个集群应与另一个节点位于同一列
我应该注意到,这个图成功地用graphviz 2.26编译,但用graphviz 2.28编译失败了…
- 我认为子图需要有一个以“cluster”开头的名称 为了得到任何样式。实际上,如果没有集群前缀,它们可能什么也做不了 这可能是你很多问题的根源李>
- 您不需要重复rankdir=LR。在顶部指定一次就足够了
- 如果子图中没有一个节点相互依赖,则 他们很有可能已经处于同一等级,而等级=不应处于同一等级 需要
digraph {
rankdir=LR
subgraph cluster0 {
"MATH 208"
"MATH 211"
graph [style="rounded,filled", color=gray]
}
subgraph clusteryear1 {
subgraph cluster100{
"MATH 100"
"MATH 110"
graph [rank=same]
}
subgraph cluster101{
"MATH 101"
"MATH 211"
"MATH 208"
graph [rank=same]
}
}
subgraph clusteryear2 {
subgraph cluster205{
"MATH 205"
"PHIL 203"
graph [rank=same]
}
}
subgraph clusteryear3 {
subgraph cluster311{
"MATH 311"
"MATH 312"
"MATH 375"
graph [rank=same]
}
}
subgraph clusteryear4 {
subgraph cluster447 {
"MATH 447"
"MATH 412"
graph [rank=same]
}
}
"MATH 100" -> "MATH 101"
"MATH 100" -> "MATH 208"
"MATH 101" -> "MATH 205"
"MATH 110" -> "MATH 311"
"MATH 211" -> "MATH 311"
"MATH 110" -> "MATH 312"
"MATH 211" -> "MATH 312"
"PHIL 203" -> "MATH 375"
"MATH 110" -> "MATH 447"
"MATH 211" -> "MATH 447"
"MATH 311" -> "MATH 412"
"MATH 312" -> "MATH 412"
}
关于集群,您是正确的,不需要为每个子图指定rankdir,但实际上我不希望所有子图都设置样式,只希望有一个名为cluster0的子图。(我会发布一张我的意思的图片,但还没有点)。在您的解决方案中,彩色集群出现在“MATH 205”列中,而不是像我所希望的那样出现在“MATH 101”列中。