Graphviz 如何将节点与群集的中心垂直对齐?
我正在寻找一种将graphviz中的各个节点与整个子图/集群对齐的方法 我目前正在教一小队分析师如何使用Graphviz 如何将节点与群集的中心垂直对齐?,graphviz,diagrammer,Graphviz,Diagrammer,我正在寻找一种将graphviz中的各个节点与整个子图/集群对齐的方法 我目前正在教一小队分析师如何使用rmarkdown,我想让他们在文档中包含简单的图表和流程图。因此,我使用DiagrammeR(和viz.js)来呈现用dot编写的图表。为了提高用户采用率,我希望尽量减少复杂性,避免使用HTML,并使用原始dot 我们的问题是,我们经常尝试将节点与包含多个节点的子图/簇对齐,但无法将整个子图与节点对齐。对齐仅适用于子图/簇内的组成节点。(参见下面的节点C、D、E和G、T) 我尝试使用GT[s
rmarkdown
,我想让他们在文档中包含简单的图表和流程图。因此,我使用DiagrammeR
(和viz.js
)来呈现用dot
编写的图表。为了提高用户采用率,我希望尽量减少复杂性,避免使用HTML
,并使用原始dot
我们的问题是,我们经常尝试将节点与包含多个节点的子图/簇对齐,但无法将整个子图与节点对齐。对齐仅适用于子图/簇内的组成节点。(参见下面的节点C、D、E和G、T)
我尝试使用GT[shape=record label=“{G | T}”]
创建记录节点,但这不允许对两个节点进行单独的样式设置
我还尝试创建一个HTML记录节点,它允许单独的样式设置,但增加了太多的复杂性,并且要求用户了解HTML
最后,我尝试在簇内插入一个不可见节点来“模拟”中心,然后使用不可见节点进行对齐。不幸的是,这将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
B -> {C D E G}
{C D E T} -> H
}
以下给出了输出:
在上图中,包含G和T的子图与包含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
}
导致: