Graphviz 如何将节点与群集的中心垂直对齐?

Graphviz 如何将节点与群集的中心垂直对齐?,graphviz,diagrammer,Graphviz,Diagrammer,我正在寻找一种将graphviz中的各个节点与整个子图/集群对齐的方法 我目前正在教一小队分析师如何使用rmarkdown,我想让他们在文档中包含简单的图表和流程图。因此,我使用DiagrammeR(和viz.js)来呈现用dot编写的图表。为了提高用户采用率,我希望尽量减少复杂性,避免使用HTML,并使用原始dot 我们的问题是,我们经常尝试将节点与包含多个节点的子图/簇对齐,但无法将整个子图与节点对齐。对齐仅适用于子图/簇内的组成节点。(参见下面的节点C、D、E和G、T) 我尝试使用GT[s

我正在寻找一种将graphviz中的各个节点与整个子图/集群对齐的方法

我目前正在教一小队分析师如何使用
rmarkdown
,我想让他们在文档中包含简单的图表和流程图。因此,我使用
DiagrammeR
(和
viz.js
)来呈现用
dot
编写的图表。为了提高用户采用率,我希望尽量减少复杂性,避免使用
HTML
,并使用原始
dot

我们的问题是,我们经常尝试将节点与包含多个节点的子图/簇对齐,但无法将整个子图与节点对齐。对齐仅适用于子图/簇内的组成节点。(参见下面的节点C、D、EG、T

我尝试使用
GT[shape=record label=“{G | T}”]
创建记录节点,但这不允许对两个节点进行单独的样式设置

我还尝试创建一个HTML记录节点,它允许单独的样式设置,但增加了太多的复杂性,并且要求用户了解HTML

最后,我尝试在簇内插入一个不可见节点来“模拟”中心,然后使用不可见节点进行对齐。不幸的是,这将GT推得很远,无法达到预期效果

digraph G {

  graph [splines = false, ranksep = 0.2]
  edge [style = "invis"]
  node [shape = box, width = 7.5]
  A B H 

  node [shape = circle, width = 1.5]

  subgraph cluster_2 {
    rank = same 
    C D E
  }

  subgraph cluster_1 { 
    G [shape = box]
    T [shape = box]
  }
  A -> B
  G -> T
  B -> {C D E G}
  {C D E T} -> H 

}
以下给出了输出:

在上图中,包含GT的子图与包含C、D、E的子图不对齐


有没有办法垂直对齐两个子图的中心?

问题是GraphViz只对齐节点行,{CDE}是一行,其中as{G->T}是两行,所以{CDE}只能与G或T对齐

然而,您可以将{cde}与G和T之间的空格对齐,尽管这可能不是您想要的。例如,像这样:

digraph G {

  graph [splines = false, ranksep = 0.2]
  //edge [style = "invis"]
  node [shape = box, width = 7.5]
  A B H 

  node [shape = circle, width = 1.5]

  subgraph cluster_2 {
    rank = same 
    C D E
  }

  subgraph cluster_1 { 
    G [shape = box]
    T [shape = box]
  }
  A -> B
  G -> T[minlen=2]
  B -> G
  B -> {C D E} -> H [minlen=2]
    T -> H
}
导致: