8

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

我不知道如何在某些节点之间建模水平边缘。我使用下面的代码来生成这个图:

图形

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] 对齐在一条水平线上

4

2 回答 2

6

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

于 2012-04-29T17:44:45.783 回答
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某些边缘来实现类似的效果。

是另一个使用 group 的示例,以及另一个使用 weight的示例(相同的问题)。

于 2012-04-29T18:00:24.297 回答