如何控制GraphViz cluster子图内的节点纵向排序
要实现cluster_2内节点a、b、c、d从上到下的固定排序,你可以通过在cluster_2内部添加不可见约束边强制节点的纵向排列顺序,修改后的代码如下:
digraph { rankdir=LR subgraph cluster_1 { bx -> cx by -> cy } subgraph cluster_2 { // 不可见边强制节点纵向顺序 a -> b -> c -> d [style=invis] } bx -> a cx -> b cy -> c by -> d }
默认情况下dot布局引擎会根据所有边的连接关系自动计算节点位置,仅调整节点声明顺序不会覆盖跨子图边带来的布局影响。添加style=invis的边后,布局引擎会遵循这组边的方向约束,把a排布在b上方、b排布在c上方、c排布在d上方,同时这组边不会在最终生成的图中显示,也不会影响其他可见边的渲染。
如果需要更精细的间距控制,还可以给不可见边添加minlen参数调整相邻节点的纵向间距,比如a -> b -> c -> d [style=invis, minlen=2]。
内容的提问来源于stack exchange,提问作者grumbler
相关产品推荐
相关产品推荐

