Graphviz异常边路由问题:如何维持A→D边的预期布局?
Graphviz 顶对齐LR布局边路由异常修复方案
案例2:添加C→F边后A→D边路由异常的修复
新增的C→F边会干扰Graphviz的自动布局计算,导致A→D边路由偏离预期,可通过以下两种方式修复:
关闭C→F边的布局约束:给C→F边添加
constraint=false属性,这条边仅作为视觉连接,不参与节点位置的布局计算,A→D边会保持原有样式:digraph { rankdir=LR; A -> B; A -> D; B -> C; C -> E; C -> F [constraint=false]; D -> E; }强制指定A→D边的连接端口:明确指定从A的右侧(
e)连接到D的左侧(w),约束边的路由方向:digraph { rankdir=LR; A -> B; A:e -> D:w; B -> C; C -> E; C -> F; D -> E; }
案例3:设置权重后A→D边路由仍异常的修复
若调整边权重未解决问题,可结合约束关闭+端口指定,或通过固定节点层级来锁定布局:
固定节点层级+约束关闭:通过
rank=same锁定节点的水平层级,同时关闭C→F边的布局约束,彻底避免新增边对原有布局的干扰:digraph { rankdir=LR; {rank=same; A;} {rank=same; D;} A -> B; A:e -> D:w; B -> C; C -> E; C -> F [constraint=false]; D -> E; }提高A→D边的权重优先级:给A→D边设置更高的
weight值,让布局算法优先保障这条边的路由走向:digraph { rankdir=LR; A -> B; A -> D [weight=10]; B -> C; C -> E; C -> F; D -> E; }
内容的提问来源于stack exchange,提问作者Florian Eichin
相关产品推荐
相关产品推荐

