我一直在挣扎了一会儿,似乎无法找到一个直接的答案。 我在与graphviz的复合子图的工作,似乎无法找到设置的正确组合,强行使两个子图相互对齐。
附件是一个简单的例子来说明这个问题...
digraph g {
compound=true;
subgraph cluster_top {
graph [color=black, label="Top", rank=min];
nodeA; nodeB; nodeC
cluster_top_DUMMY [shape=point style=invis]
}
subgraph cluster_service {
graph [color=black, label="Bottom", rank=min];
node1; node2; node3; node4; node5; extra_long_node
cluster_bottom_DUMMY [shape=point style=invis]
}
cluster_top_DUMMY -> cluster_bottom_DUMMY [ style=invis ]
}
这产生与底部子比顶部子图显著较宽的输出。
我真正想要的是确保顶部和底部总是一样宽。 另外,如果有太多的节点,以适合可用的宽度,它会产生节点的其他行。
一种可能的(坏,但工作)的解决方案将是使用不可见的节点,并设置宽度。 考虑以下:
digraph g {
compound=true;
subgraph cluster_top {
graph [color=black, label="Top", rank=min];
nodeAI0 [style=invisible]
nodeAI1 [style=invisible]
nodeAI2 [style=invisible,fixedsize=true,width=1.65]
nodeA; nodeB; nodeC
cluster_top_DUMMY [shape=point style=invis]
}
subgraph cluster_service {
graph [color=black, label="Bottom", rank=min];
node1; node2; node3; node4; node5; extra_long_node
cluster_bottom_DUMMY [shape=point style=invis]
}
cluster_top_DUMMY -> cluster_bottom_DUMMY [ style=invis ]
}
无形的节点(NodeAI0-NodeAI2)乘坐空间。 固定大小= TRUE,宽度= 1.65,使最后一个采取完全相同1.65英寸。
另外,更好的解决方案是还设置了相关的较长节点具体为(以避免去寻找正确的值)加入类似:
node [fixedsize=true,width=0.75]
后的化合物=真部。