tree - 如何让隐形节点在graphviz中占据空间?

标签 tree drawing binary-tree graphviz

我想使用 graphviz 绘制二叉树,并且节点的左 child 出现在右 child 的左侧(duh)很重要。如果没有左 child ,我希望左边有一个空白空间,以便在视觉上清楚地表明右 child 是右 child 。如果没有右 child (右侧应该有一个空白区域),我也想这样做。

例如,我想要这样的东西:

A                     A
  \     instead of    |
    B                 B

我可以确保 Graphviz 使用 ordering = "out"将左 child 放在右 child 之前,但是如果没有左 child ,那么右 child 可能会出现在其 parent 的正下方。

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

最佳答案

迟到总比不到好...

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

graph Test 
{
    node[ shape = plaintext ];

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

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

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

enter image description here

关于tree - 如何让隐形节点在graphviz中占据空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31968116/

相关文章:

flash - 如何以编程方式绘制可缩放、美观、弯曲的漫画书气球尾部?

c - 从文件错误中读取单词

algorithm - 如何在 Haskell 中编写 N 元树遍历函数

c# - 如何在 .NET 中构建图表应用程序?

xml - 两个 sibling 的执行顺序是否依赖?

cocoa - 将离线 NSView 捕获到 NSImage

c - 如果给你两个遍历序列,你能构造二叉树吗?

java - 在 Java 中实现和可视化二叉树

algorithm - 如何逆序遍历这棵树

angular - 尝试使按钮折叠/展开 Angular Material 嵌套树时出错