In Graphviz, how do I align an edge to the top center of a node?

前端 未结 3 400
醉梦人生
醉梦人生 2020-12-17 03:05

In Graphviz / dot, is it possible to get the edge to connect exactly in the top center of a node? Reading the dot guide, I thought tailport and headport<

相关标签:
3条回答
  • 2020-12-17 03:18

    Notes

    1. splines=ortho doesn't support tailport or headport (see: "Graphviz Issue Tracker - 0002142: ortho plots do not respect ports. also arrowheads seem to go the wrong way.")
    2. You can use hidden nodes, but don't use them on the lateral nodes (like C or F on the example below)

    Image

    Code

    This code works even with more than 3 child nodes and it's compatible with Graphviz 2.38. Useful for Org Chart (even if it's not perfect if you have many levels - I'm still try to reduce asymmetries).

     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;
    }
    
    0 讨论(0)
  • 2020-12-17 03:26

    I see the same effect under Windows7 - did not try other platforms.

    I tried fiddling with the 'port positions', See http://www.graphviz.org/content/attrs#kportPos

    e.g. changing the last lines of your code to

      point2 -> point1
      point2 -> C:nw
      point1 -> point3
      point3 -> E:ne
      point1 -> D
    

    gives a (slightly) better positioning of the connecting lines.

    0 讨论(0)
  • 2020-12-17 03:33

    Turns out the most recent (2.38) version isn't working properly in Mac OS X Yosemite, I had to downgrade to 2.36 as noted in the download page.

    0 讨论(0)
提交回复
热议问题