使用DiagrammeR将一个节点行放置在另一个节点行下面

4

考虑下面的流程图,它是通过DiagrammeR包生成的:

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

样例图

是否有可能将节点E放置在节点D下方,而节点F则向左侧跟随,如下图所示:

图片描述


你是誓言要使用Mermaid(我相信一定有方法可以做到)还是Graphviz也是一个选项? - user20650
@user20650 是的,我认为graphviz可以作为一种选择。 - Konrad
1个回答

4
您可以使用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]};
  }
')

这将产生:

在此输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接