强制两个节点在Graphviz中占据相同的列组?

强制两个节点在Graphviz中占据相同的列组?,graphviz,Graphviz,使用ruby graphviz,我创建了如下图形(添加边框以强调渲染边界): 我真正想要的是A和K在顶部排成一行(如果rankdir=“LR”,则排在左侧)。因此,我添加了一个不可见节点(称为X),并添加了从X到A和K的不可见边。下面是我得到的: 十、 XA和XK没有标签,样式设置为“invis”。 X的高度、宽度和边距设置为0,fixedsize设置为true。 XA和XK将minlen、len和penwidth设置为0 但顶部仍然有空白。除了事后裁剪,还有什么办法可以摆脱它吗?实现这一点

使用ruby graphviz,我创建了如下图形(添加边框以强调渲染边界):

我真正想要的是A和K在顶部排成一行(如果rankdir=“LR”,则排在左侧)。因此,我添加了一个不可见节点(称为X),并添加了从X到A和K的不可见边。下面是我得到的:

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


但顶部仍然有空白。除了事后裁剪,还有什么办法可以摆脱它吗?

实现这一点不需要不可见的节点

这是强制两个节点使用相同列组的点语法:

{rank=same; A; K;}
这被称为一个

我不知道ruby graphviz,我不知道如何创建子图-但有一个:


要使上述解决方案发挥作用,还需要进行一些额外的争论,但子图才是关键。谢谢一个很好的例子,一个答案解决了OP的问题而没有回答他的问题。我的问题是“如何防止不可见节点占用空间”…;-)@德夫索拉。。。或者一个错误问题的例子来解决初始问题:-)然而,在大多数情况下,如果有其他解决方案,最好不要使用不可见节点。但是,请继续,并就您的特定问题发布一个问题,有人可能会找到解决方案。
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"]
}