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

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

X,XA和XK没有标签,样式设置为"invis".X的高度,宽度和边距设置为0,fixedsize设置为true.XA和XK将minlen,len和penwidth设置为0.
但顶部还有空的空间.有没有办法摆脱它,事后没有裁剪?
您不需要不可见的节点来实现此目的。
这是强制两个节点具有相同排名的点语法:
{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)