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

时间:2011-09-23 07:59:38

标签: graphviz

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

Before

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

After

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

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

1 个答案:

答案 0 :(得分:4)

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

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

{rank=same; A; K;}

这称为subgraph

我不知道ruby-graphviz,我不知道如何创建子图 - 但是有一个example on 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"]
}