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

如何调整DiagrammeR流程图间距实现多排除项垂直排列

你可以通过拆分Box2到Box3之间的隐藏中间节点,让每个排除项对应一个中间节点的方式实现需求,完整可运行代码如下:

library(DiagrammeR)

grViz("digraph flowchart {
  # 全局参数:调整纵向节点间距,可根据排版需求修改
  graph [ranksep = 0.3]
  # 业务节点定义
  node [fontname = Helvetica, shape = rectangle, fixedsize = false, width = 1] 
  1 [label = 'Box 1']
  2 [label = 'Box 2']
  3 [label = 'Box 3']
  m1 [label = 'm1']
  m2 [label = 'm2']
  m3 [label = 'm3']
  m4 [label = 'm4']
  m5 [label = 'm5']
  m6 [label = 'm6']
  m7 [label = 'm7']
  m8 [label = 'm8']
  
  # 隐藏路径节点定义
  node [shape=none, width=0, height=0, label='']
  p1
  # Box2到Box3之间拆分7个隐藏节点,对应7个待排列的排除项
  p2_1 p2_2 p2_3 p2_4 p2_5 p2_6 p2_7
  
  # 主流程路径设置
  1 -> p1 [dir=none]
  p1 -> 2
  2 -> p2_1 [dir=none]
  p2_1 -> p2_2 -> p2_3 -> p2_4 -> p2_5 -> p2_6 -> p2_7 [dir=none]
  p2_7 -> 3
  
  # 排除分支绑定:每个隐藏节点和对应排除项设为同层级,实现横向对齐
  {rank=same; p1 -> m1}
  {rank=same; p2_1 -> m2}
  {rank=same; p2_2 -> m3}
  {rank=same; p2_3 -> m4}
  {rank=same; p2_4 -> m5}
  {rank=same; p2_5 -> m6}
  {rank=same; p2_6 -> m7}
  {rank=same; p2_7 -> m8}
}")

改动说明

  1. 原代码所有排除项都绑定到同一个隐藏节点p2,同一层级下的多个节点默认会横向排列,因此出现了所有排除项堆在同一行的问题。
  2. 现在将Box2到Box3之间的单个隐藏节点拆分为与排除项数量一致的多个连续隐藏节点,每个隐藏节点分别和对应的m类排除项设置为同一层级,Graphviz会自动将同层级节点横向对齐,不同层级节点纵向排列,自然实现了排除项垂直排布的效果。
  3. 全局参数ranksep用于调整纵向节点的间距,你可以根据自己的排版需求调整数值大小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:54:00