如何在GraphViz中强制生成交叉边并保持集群对齐?
在GraphViz中强制生成交叉边并保持集群水平对齐
要实现两个集群水平对齐且边交叉的效果,你需要调整布局规则,强制GraphViz不自动规避边交叉。以下是修改后的代码及关键说明:
修改后的代码
rankdir=LR # 整体布局设为左右方向,让集群水平排列 { rank=same; cluster_designed; cluster_actual; } # 强制两个集群处于同一层级 subgraph cluster_designed { label="*As Designed*"; node [shape=square] rank=same # 集群内节点水平排列 Drain_design -> Gate_design -> Source_design [style=invis]; } subgraph cluster_actual { label="*On Chip*"; node [shape=square] rank=same # 集群内节点水平排列 Gate_actual -> Source_actual -> Drain_actual [style=invis]; } Drain_design -> Drain_actual; Gate_design -> Gate_actual; Source_design -> Source_actual; }
关键修改点
- 添加
rankdir=LR:将整体布局方向从默认的上下(TB)改为左右(LR),确保两个集群水平并排。 - 新增集群层级约束:通过
{ rank=same; cluster_designed; cluster_actual; }指定两个集群必须处于同一高度,彻底阻止GraphViz为避免边交叉而下移集群。 - 保留集群内节点规则:维持原有的
rank=same和隐形边,保证每个集群内的引脚按需求水平排列,实现错位效果。
这样调整后,GraphViz会保留边的交叉,同时让两个集群保持水平对齐、大小一致,完美展示引脚错位的场景。
内容的提问来源于stack exchange,提问作者wisner
相关产品推荐
相关产品推荐

