在Graphviz中,如何将边与节点的顶部中心对齐?

在Graphviz中,如何将边与节点的顶部中心对齐?,graphviz,dot,Graphviz,Dot,在Graphviz/dot中,是否有可能使边精确地连接在节点的顶部中心?阅读dot指南时,我认为尾港和头港会对我有所帮助,但添加它们并没有什么区别,有时会得到更奇怪的结果 这就是我得到的: 这就是我想要的: 我用来获取(不正确)图形的代码是: digraph G { graph [splines = ortho]; node [shape = box]; edge [dir = none]; { rank = same A AB [shape =

在Graphviz/dot中,是否有可能使边精确地连接在节点的顶部中心?阅读dot指南时,我认为
尾港
头港
会对我有所帮助,但添加它们并没有什么区别,有时会得到更奇怪的结果

这就是我得到的:

这就是我想要的:

我用来获取(不正确)图形的代码是:

digraph G {

  graph [splines = ortho];
  node [shape = box];
  edge [dir = none];

  {
    rank = same

    A
    AB [shape = point]
    B

    A -> AB
    AB -> B
  }

  {
    rank = same
    point1 [shape = point]
    point2 [shape = point]
    point3 [shape = point]
  }

  AB -> point1

  // The following section if to make the nodes appear in 
  // the correct order, not sure if there's a better way
  {
    edge [style = invisible]
    rank = same
    C
    D
    E
    F
    C -> D
    D -> E
  }

  point2 -> point1
  point2 -> C
  point1 -> point3
  point3 -> E
  point1 -> D

}

事实证明,最新版本(2.38)在Mac OS X Yosemite中无法正常工作,我不得不降级到2.36,如中所述。

我在Windows7下看到了相同的效果-没有尝试其他平台

我试着摆弄“港口位置”,看到了吗

e、 g.将代码的最后一行更改为

  point2 -> point1
  point2 -> C:nw
  point1 -> point3
  point3 -> E:ne
  point1 -> D
使连接线的位置(稍微)更好。

注意
  • spline=ortho
    不支持
    tailport
    headport
    (请参阅:)
  • 可以使用隐藏节点,但不要在横向节点上使用它们(如下面示例中的
    C
    F
  • 形象

    代码 这段代码甚至可以用于3个以上的子节点,并且与Graphviz 2.38兼容。对于组织结构图很有用(即使它不是完美的,如果你有很多层次-我仍然在尝试减少不对称)


    将代码复制粘贴到中会产生正确的结果。您使用的是最新版本的graphviz吗?@marapet谢谢!事实证明,最新版本(2.38)在Mac OS X Yosemite中无法正常工作,我不得不将其降级至2.36,如下载页面所述:如果您将此作为答案发布,我将接受,再次感谢!我很高兴你明白了!既然您完成了所有的工作,您应该添加并接受您自己的答案;)
     graph {
        splines=ortho;
        {0, 1, 2, 3 [width=0, shape=point, style=invis];}
        {rank=same; 1 -- 2 -- 3;}
        0 -- 2;
        node [shape=box];
        {rank=same; A -- 0 -- B;}
        1 -- C;
        1 -- D;
        3 -- E;
        3 -- F;
    }