diagrammer - 如何在我的流程图中添加武器?

diagrammer - how can I add arms to my flowchart?

对于我的流程图,我有一个详细说明数据流的垂直图表。但是在向下的箭头上,我想添加侧箭头来描述缺失数据的去向。我该怎么做呢?我在任何文档和示例中都看不到它,因为它往往涉及更复杂的事情,而且我知道这是一项非常基本的任务!

library(DiagrammeR)

grViz("digraph flowchart {
  # node definitions with substituted label text
  node [fontname = Helvetica, shape = rectangle, fixedsize = false, width = 1] 
  1 [label = 'data (100%)']
  2 [label = 'data  (90.4%)']
  3 [label = 'data  \ndata (83.3%)']
  4 [label = 'data (66%)']


  7 [label = 'data (100%)']
  8 [label = 'data  (74.4%)']
  9 [label = 'data  (69.6%)']
  10 [label = 'data  (55.4%)']

  1 -> 2 -> 3 -> 4;

  7 -> 8 -> 9 -> 10
}      ")

这给了我两个并排的面板,但我想要箭头从向下的箭头上掉下来,我可以在其中放置缺失数据的 n。

标准技巧是创建不可见的虚拟节点,然后将每条边分成两部分:1) 源 -> 虚拟节点,以及 2) 虚拟节点 -> 目标节点:

library(DiagrammeR)

grViz("digraph flowchart {
  # node definitions with substituted label text
  node [fontname = Helvetica, shape = rectangle, fixedsize = false, width = 1] 
  1 [label = 'data (100%)']
  2 [label = 'data  (74.4%)']
  3 [label = 'data  (69.6%)']
  4 [label = 'data  (55.4%)']
  m1 [label = 'missing (25.6%)']
  m2 [label = 'missing (4.8%)']

  node [shape=none, width=0, height=0, label='']
  p1 -> 2; p2 -> 3 -> 4;
  {rank=same; p1 -> m1}
  {rank=same; p2 -> m2}

  edge [dir=none]
  1 -> p1; 2 -> p2;
}")

出于演示目的,我缩短了您的示例。在上面, p1p2 是不可见的虚拟节点。一共有三组边:

  • 从虚拟节点到目标的向下定向边(例如,p1 -> 2
  • 从虚拟节点到 "missing" 节点的水平有向边。边缘方向通过 rank=same.
  • 强加
  • 从源到虚拟节点的无向​​边