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

Graphviz实现严格左右流向边(仅从节点左侧入、右侧出)的配置方法咨询

Graphviz实现严格左右流向边(仅从节点左侧入、右侧出)的配置方法咨询

嗨,这个需求其实用Graphviz的**端口(port)**和边的属性就能轻松搞定!我帮你调整了DOT代码,完美实现你想要的效果:

首先是实现弯曲弧的版本,完全符合你说的“从C1右侧出,绕回B0左侧入”的要求:

digraph net {
    rankdir="LR"  # 保持从左到右的布局方向
    splines="curved"  # 让边自动生成弯曲样式,避免直线交叉
    
    "C0" [shape=oval label="C0"]
    "C1" [shape=oval label="C1"]
    "B0" [shape=box label="B0"]
    
    # 常规边默认会遵循左入右出的逻辑,不用额外配置
    "C0" -> "B0"
    "B0" -> "C1"
    
    # 关键配置:强制边从C1右侧出发,进入B0左侧
    "C1":e -> "B0":w [minlen=2]  # minlen给边留够弯曲空间,避免太紧凑
}

要是你想要更规整的直角矩形弧,只需要把splines属性改成polyline就行,代码如下:

digraph net {
    rankdir="LR"
    splines="polyline"  # 生成直角折线式的边
    
    "C0" [shape=oval label="C0"]
    "C1" [shape=oval label="C1"]
    "B0" [shape=box label="B0"]
    
    "C0" -> "B0"
    "B0" -> "C1"
    "C1":e -> "B0":w [minlen=2]
}

给你拆解下核心逻辑:

  • :e和:w是节点的端口标记,e对应右侧(East),w对应左侧(West),强制边严格按照你要的方向进出节点
  • splines属性控制边的样式,curved是平滑弯曲,polyline是直角折线,按需选择就行
  • minlen=2是给边设置最小长度,确保弯曲/折线有足够空间展示,不会挤成一团

如果自动布局的位置你觉得不满意,还可以手动用pos属性指定边的控制点,但一般默认的自动布局已经能满足需求啦~

备注:内容来源于stack exchange,提问作者R71

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:47:38