强制两个节点在Graphviz中占据相同的等级?

mbk*_*ein 6 graphviz

使用ruby-graphviz,我创建了一个看起来像这样的图形(添加边框以强调渲染边界):

之前

我真正想要的是A和K在顶部排成一行(或左边,如果rankdir ="LR").所以我添加了一个不可见的节点(称之为X),并添加了从X到A和K的不可见边.这就是我得到的:

后

X,XA和XK没有标签,样式设置为"invis".X的高度,宽度和边距设置为0,fixedsize设置为true.XA和XK将minlen,len和penwidth设置为0.

但顶部还有空的空间.有没有办法摆脱它,事后没有裁剪?

mar*_*pet 5

您不需要不可见的节点来实现此目的。

这是强制两个节点具有相同排名的点语法:

{rank=same; A; K;}
Run Code Online (Sandbox Code Playgroud)

这称为子图

我不知道 ruby​​-graphviz,我不知道如何创建子图 - 但github 上有一个示例

c2 = g.subgraph { |c|
  c[:rank => "same"]
  c.mysite[:label => "\nexample.com\n ", :shape => "component", :fontname => "Arial"]
  c.dotgraph[:label => "\ndotgraph.net\n ", :shape => "component", :fontname => "Arial"]
}
Run Code Online (Sandbox Code Playgroud)