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

Graphviz/DOT流程图节点对齐与箭头合并问题求助

解决方案

修改后的DOT代码

digraph {
    compound=true;
    rankdir=TB;

    request [
        label = "Request";
        shape = rect;
    ];

    {
        rank=same;
        successful [
            label = "Successful?";
            shape = diamond;
        ];
        done [
            label = "Done";
            shape = oval;
        ];
    }

    // 为需要垂直对齐的节点设置同组属性
    condition_1 [
        label = "Condition 1";
        shape = diamond;
        group = conditions;
    ];
    condition_2 [
        label = "Condition 2";
        shape = diamond;
        group = conditions;
    ];
    condition_3 [
        label = "Condition 3";
        shape = diamond;
        group = conditions;
    ];
    condition_n [
        label = "Condition N";
        shape = diamond;
        group = conditions;
    ];
    fail [
        label = "Fail";
        shape = oval;
        group = conditions;
    ];

    do_some_thing [
        label = "Do some thing";
        shape = oval;
    ];

    // 新增不可见节点用于合并箭头
    dummy [shape=point, style=invis];

    // 流程边定义
    request -> successful;
    done -> successful [label="Yes"; dir=back];

    successful -> condition_1;
    condition_1 -> condition_2;
    condition_2 -> condition_3;
    condition_3 -> condition_n;
    condition_n -> fail [label="No"];

    // 合并"Yes"分支箭头
    condition_1 -> dummy [label="Yes"];
    condition_2 -> dummy;
    condition_3 -> dummy;
    condition_n -> dummy;
    dummy -> do_some_thing;
}

关键修改说明

  • 垂直对齐实现:给condition_1到condition_n、fail节点添加group = conditions属性,DOT会自动将同组节点排列在同一竖列,实现垂直对齐。
  • 箭头合并实现:新增不可见点节点dummy,让所有条件节点的"Yes"分支先指向该节点,再由它统一指向do_some_thing,将分散的箭头合并为单条。
  • 保留原有的rank=same设置保证successful和done水平对齐,通过链状连接维持流程的垂直走向。

内容的提问来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:27:03