диаграмма - как я могу добавить руки к моей блок-схеме? - PullRequest
3 голосов
/ 19 сентября 2019

Для моей потоковой диаграммы у меня есть вертикальная диаграмма, детализирующая поток данных.Однако на стрелках вниз я хочу добавить боковые стрелки, чтобы описать, куда идут отсутствующие данные.Как мне это сделать?Я не вижу этого ни в одной из документации и примеров, потому что это, как правило, гораздо более сложные вещи, и я знаю, что это очень простая задача!

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 Ответ

0 голосов
/ 19 сентября 2019

Стандартный прием - создать невидимые фиктивные узлы, а затем разбить каждое ребро на две части: 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;
}")

Я сократил ваш примерв демонстрационных целях.Выше p1 и p2 являются невидимыми фиктивными узлами.Существует три набора ребер:

  • Направленные вниз ребра от фиктивных узлов до целей (например, p1 -> 2)
  • Горизонтально направленные ребра от фиктивных узлов к "пропущенным" узлам.Направление края накладывается через rank=same.
  • Ненаправленные ребра от источника к фиктивным узлам

enter image description here

...