需要使用dot / graphviz绘制图形,如下图所示:
文本可以在箭头之上,就像graphviz那样。但是如何实现T-layout?需要为顶行创建一个集群吗?
答案 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
从上到下布局树。因此,逻辑边缘方向必须是从上到下,即使显示方向可能是相反的方向(这是这种情况)。