如何使不可见节点占用graphviz中的空间?

时间:2015-08-12 14:28:12

标签: tree drawing binary-tree graphviz

我想使用graphviz绘制二叉树,重要的是节点的左子节点出现在右子节点的左侧(duh)。如果没有留下的孩子,我想在左边留一个空的空间,以使视觉上清楚正确的孩子是正确的孩子。如果没有合适的孩子,我想做同样的事情(在右边应该有一个空的空间)。

例如,我想要类似的东西:

A                     A
  \     instead of    |
    B                 B

我可以确保Graphviz会使用ordering =" out"将左边的孩子放在右边,但是如果没有左子,那么右边的孩子可能会出现在其父节目的正下方。

如果我添加了一个缺少孩子的虚拟节点,我会得到正确的布局,但虚拟节点就在图片上(我不想要它们)。我尝试使用style =" invis"对于虚拟节点和连接到它们的边缘,但是就好像它们对于graphviz不存在一样。我怎样才能解决这个问题呢?

2 个答案:

答案 0 :(得分:9)

迟到总比不上......

您可能将虚拟节点留空("")。如果你给它一个合理大小的标签,它可以正常工作:

graph Test 
{
    node[ shape = plaintext ];

    C [ label = "C", style = invis ];

    A -- B;
    A -- C [ style = invis ]; 
}

证明MWE节省时间和精力的一个很好的例子......

enter image description here

答案 1 :(得分:0)

如果使用两个填充的不可见节点会更好,因此您想要查看的节点将定义为保留在侧面,而不是直接位于其祖先之下。