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

aye*_*epi 3 r data-visualization graphviz diagrammer

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

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
}      ")
Run Code Online (Sandbox Code Playgroud)

这给了我两个并排的面板,但我希望箭头从向下的箭头中出来,我可以在其中放置 n 以表示丢失的数据。

Art*_*lov 5

标准技巧是创建不可见的虚拟节点,然后将每条边分成两部分: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;
}")
Run Code Online (Sandbox Code Playgroud)

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

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

在此处输入图片说明