Использование DiagrammeR для размещения одного ряда узлов под другим - PullRequest
0 голосов
/ 02 июня 2018

С учетом следующей блок-схемы, полученной из пакета DiagrammeR:

DiagrammeR::DiagrammeR(diagram =
                       "
                       graph LR;
                       A[Start]-->B;
                       B --> C;
                       C --> D;
                       D --> E;
                       E --> F;
                       ")

Sample Diagram

Можно ли обернуть его , поэтому узел E находится ниже узла D, а узел F следует влево, как показано на рисунке ниже:

enter image description here

1 Ответ

0 голосов
/ 03 июня 2018

Вы можете сделать это, используя опцию graphviz.

Например, вы можете получить базовые позиции узлов графика, используя

library(DiagrammeR)

grViz("
  digraph flow {
       D -> E;
       {rank=same ; A -> B -> C -> D};
       {rank=same ;           F -> E[dir=back]};
   }
")

И вы можете добавить несколько атрибутовчтобы подтвердить его

grViz('
  digraph flow {

       # set characteristics 
       node[shape=square, 
            height=1,
            color=skyblue, 
            penwidth=2,
            fillcolor=lavender, 
            style=filled,
            fontsize=25, 
            fontcolor=grey46,
            fontname = "helvetica" # this may be OS dependent
            ];
       edge[minlen=2, 
            color=grey,
            penwidth=2
            ];
       nodesep=0.5; #hack
       A[label=Start];

       # Graph
       D -> E;
       {rank=same ; A -> B -> C -> D};
       {rank=same ;           F -> E[dir=back]};
  }
')

, который производит

enter image description here

...