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

Tree 如何使不可见节点占据graphviz中的空间?,tree,drawing,binary-tree,graphviz,Tree,Drawing,Binary Tree,Graphviz,我想用graphviz绘制一个二叉树,一个节点的左子节点出现在右子节点的左(duh)处是很重要的。如果没有左边的孩子,我希望在左边有一个空白,以便在视觉上清楚地表明右边的孩子就是右边的孩子。如果没有合适的孩子,我也会这样做(右边应该有一个空白) 例如,我想要的是: A A \ instead of | B B 我可以使用ordering=“out”确保Graphviz将左子项放在右子项之前,但如果

我想用graphviz绘制一个二叉树,一个节点的左子节点出现在右子节点的左(duh)处是很重要的。如果没有左边的孩子,我希望在左边有一个空白,以便在视觉上清楚地表明右边的孩子就是右边的孩子。如果没有合适的孩子,我也会这样做(右边应该有一个空白)

例如,我想要的是:

A                     A
  \     instead of    |
    B                 B
我可以使用ordering=“out”确保Graphviz将左子项放在右子项之前,但如果没有左子项,则右子项可能出现在其父项的正下方


如果我在缺少子节点的地方添加虚拟节点,我会得到正确的布局,但是虚拟节点会出现在图片上(我不想要它们)。我尝试对连接到它们的虚拟节点和边使用style=“invi”,但对于graphviz,它们似乎不存在。我怎样才能避开这个问题?

迟做总比不做好

您可能将虚拟节点留空(
“”
)。如果您给它一个合理大小的标签,它工作良好:

graph Test 
{
    node[ shape = plaintext ];

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

    A -- B;
    A -- C [ style = invis ]; 
}
这是一个很好的例子,说明MWE可以节省时间和精力


如果使用两个填充的不可见节点,效果会更好,因此您希望看到的节点肯定会位于侧面,而不是位于其祖先的正下方