Graphviz嵌套subgraph水平定向时节点顺序异常解决方案问询
Graphviz dot 示意图反向生成解决方案
调整思路
- 新增
rank=same规则强制B、C、D、E、F、G全部处于同一水平层级,直接解决嵌套子图默认垂直排布的问题 - 给B指向D/E/F的边添加
constraint=false参数,避免这类连接边干扰原有水平节点的排序逻辑 - 保留原有隐形边配置,固定C→D→E→F→G的水平先后顺序,保证子图内节点排列符合预期
完整可运行代码
digraph G { newrank=true; rankdir=TB; subgraph cluster_0 { edge [style=invis] subgraph cluster_0_0 { D -> E -> F } C -> D -> E -> F -> G } {rank=same; B; C; D; E; F; G;} A -> C A -> B A -> G B -> D [constraint=false] B -> E [constraint=false] B -> F [constraint=false] }
运行上述代码即可得到和目标示例完全一致的输出效果。
内容的提问来源于stack exchange,提问作者Michael Berkowitz
相关产品推荐
相关产品推荐

