R 图解程序流程图:对齐垂直节点

R 图解程序流程图:对齐垂直节点,r,diagrammer,R,Diagrammer,我正在使用DiagrammeRR包绘制流程图,下面是用于生成模拟示例的代码: library(DiagrammeR) grViz("digraph flowchart { # node type 1: starting and ending node node [fontname = Helvetica, shape = oval] start [label = '@@1'] node [fontname = Helvetica, shape = oval] pr

我正在使用
DiagrammeR
R包绘制流程图,下面是用于生成模拟示例的代码:

library(DiagrammeR)
grViz("digraph flowchart {

  # node type 1: starting and ending node
  node [fontname = Helvetica, shape = oval]
  start [label = '@@1']
  node [fontname = Helvetica, shape = oval]
  pro2 [label = '@@6']

  # node type 2: decision
  node [fontname = Helvetica, shape = diamond]
  dec1 [label = '@@2']
  dec2 [label = '@@3']
  node [fontname = Helvetica, shape = diamond]
  dec3 [label = '@@4']

  # node type 3: process 
  node [fontname = Helvetica, shape = rectangle]
  pro1 [label = '@@5']
  node [fontname = Helvetica, shape = rectangle]        
  pro3 [label = '@@7']
  
  # specify which nodes are of the same 'rank' so that they'll be drawn at the same level
  {rank = same; dec2 pro3}
  {rank = same; pro1 dec3}
  
  # edge definitions with the node IDs
  edge[tailclip = true, headclip = true];
  start -> dec1
  dec1 -> dec2 [fontname = Helvetica, label = '', headport = 'n', tailport = 's']
  dec1 -> pro3 [fontname = Helvetica, label = '', headport = 'n', tailport = 'e']
  dec2 -> pro1 [fontname = Helvetica, label = '', tailport = 's']
  dec2 -> pro3 [fontname = Helvetica, label = '']
  pro3 -> dec3 [fontname = Helvetica, label = '', headport = 'n']
  dec3 -> pro2 [fontname = Helvetica, label = '', headport = 'n', tailport = 's']
  dec3 -> pro3 [fontname = Helvetica, label = '', headport = 'e', tailport = 'e']
  pro1 -> dec1 [fontname = Helvetica, label = '', headport = 'w']
  }

  [1]: 'START'
  [2]: 'decision 1'
  [3]: 'decision 2'
  [4]: 'decision 3'
  [5]: 'process 1'
  [6]: 'END'
  [7]: 'process 3'
  ")
创建的流程图如下所示:我希望

  • 过程1可以垂直对齐,如上面的“开始”、“决定1”和“决定2”(目前它位于左侧,看起来很尴尬;从决定2到过程1的箭头应该是直的,而不是弯曲的
  • 决策3END可以与上面的“流程3”垂直对齐;流程3到决策3的箭头应该是直的,而不是弯曲的
  • “很好”,但不是必需的:有没有办法将“弯曲”箭头改为直箭头?例如,我希望让箭头的尾部从流程1的西侧开始,水平地直一点,然后垂直地直到与决策1相同的高度,最后水平地直到决策1的西侧
谢谢你的帮助


对于1和2,添加
{rankdir='TB';start->dec1->dec2->pro1};{rankdir='TB';pro3->dec3->pro2};
做你想做的事(你需要删除其他边)。Re 3你可能需要添加一个虚拟/不可见的节点(这些是搜索词)Re 3;给出了一个例子。