graphviz中简单的“T形”图形

时间:2011-11-15 17:56:46

标签: graphviz

需要使用dot / graphviz绘制图形,如下图所示: simple T shaped graph

文本可以在箭头之上,就像graphviz那样。但是如何实现T-layout?需要为顶行创建一个集群吗?

2 个答案:

答案 0 :(得分:3)

这是使用rank=same作为子图的一种可能性:

digraph g {
    node[shape=point, width=0.2];
    {
        rank=same;
        p1 -> n [label="text1"];
        n -> p2 [label="text2"];
    }
    n -> p3 [label="text3", dir=back];
    n[label="node", shape=rect, style=rounded];
}

您也可以使用左右布局而不是自上而下。

另一种可能性是使用constraint=false禁用某些边缘的效果:

digraph g {
    node[shape=point, width=0.2];
    p1 -> n [label="text1", constraint=false];
    n -> p2 [label="text2", constraint=false];
    n -> p3 [label="text3", dir=back];
    n[label="node", shape=rect, style=rounded];
}

结果是一样的。

答案 1 :(得分:2)

dot通常在图层中布局树。要强制边缘不是图层分隔,您可以添加constraint=false选项。如下所示:

digraph {
  A [shape=point]
  B [shape=point]
  C [shape=point]
  N [label="node"]

  A -> N [label="text1", constraint=false]
  N -> B [label="text2", constraint=false]
  N -> C [label="text3", dir=back]
}

应该有用。

请注意,从较低节点到“节点”的边缘必须向后,因为dot从上到下布局树。因此,逻辑边缘方向必须是从上到下,即使显示方向可能是相反的方向(这是这种情况)。