Graphviz - 节点之间的水平边

时间:2012-04-29 17:22:16

标签: graph graphviz dot

晚上好,我正在尝试使用 graphviz 生成图表。

我无法弄清楚如何在某些节点之间建模水平边。我使用下一个代码生成此图:

Graph

digraph{ rankdir=LR;
//{rank=same; "[0]"; "[10B1]"; "[62]"; "[8]"; "[9]"; "[10]";}
"[0]"->"[37]"; "[37]"->"[4]"; "[37]"->"[8]";
"[8]"->"[9]"; "[9]"->"[10]"; "[62]"->"[8]";
"[0]"->"[10B1]"; "[10B1]"->"[62]"; "[0]"->"[2]";
"[2]"->"[3]"; "[7]"->"[8]"; "[4]"->"[7]";
}

我想将节点[8],[10B1],[62] [8],[9]和[10]对齐在一条水平线中。

2 个答案:

答案 0 :(得分:6)

另一种解决方案是让必须对齐的节点共享group属性的相同值:

digraph{
rankdir=LR;

node[group=main];
"[0]"; "[10B1]"; "[62]"; "[8]"; "[9]";
node[group=""];

"[0]"->"[37]";
"[37]"->"[4]";
"[37]"->"[8]";
"[8]"->"[9]";
"[9]"->"[10]";
"[62]"->"[8]";
"[0]"->"[10B1]";
"[10B1]"->"[62]";
"[0]"->"[2]";
"[2]"->"[3]";
"[7]"->"[8]";
"[4]"->"[7]";
}

您可以通过调整weight或使用constraint=false来获得类似的内容。

此处为an other example using groupother example using weight(同一问题)。

答案 1 :(得分:3)

您需要将这些节点放在cluster中。在该群集内,您可以设置rank=lr以使节点从左向右放置。在将连接边添加到图的其余部分之前,定义集群及其中所需的节点非常重要。