Graphviz - 节点之间的水平边

Nan*_*nik 6 graph dot graphviz

晚上好,我正在尝试使用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]";
}
Run Code Online (Sandbox Code Playgroud)

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

apm*_*ell 6

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


mar*_*pet 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]";
}
Run Code Online (Sandbox Code Playgroud)

您可以通过调整weight或使用constraint=false某些边来实现类似的功能.

这是使用组的另一个示例,以及使用权重另一个示例(相同的问题).