You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:18:37