graphviz中的冠图 - 如何正确保存顺序?

时间:2014-09-20 22:51:02

标签: graphviz

我已经编写了以下graphviz代码,用于在8个节点上绘制冠图:

graph G {
  u1 [label=<<I>u<SUB>1</SUB></I>>]
  v1 [label=<<I>v<SUB>1</SUB></I>>]
  u2 [label=<<I>u<SUB>2</SUB></I>>]
  v2 [label=<<I>v<SUB>2</SUB></I>>]
  u3 [label=<<I>u<SUB>3</SUB></I>>]
  v3 [label=<<I>v<SUB>3</SUB></I>>]
  u4 [label=<<I>u<SUB>4</SUB></I>>]
  v4 [label=<<I>v<SUB>4</SUB></I>>]
  u1 -- v2 
  u1 -- v3 
  u1 -- v4
  u2 -- v1
  u2 -- v3
  u2 -- v4
  u3 -- v1
  u3 -- v2
  u3 -- v4
  u4 -- v1
  u4 -- v2
  u4 -- v3
}

使用dot编译时的结果很好,但不是我想要的结果 - 我需要顶层&#39;层的顺序&#39;节点为u_1, u_2, u_3, u_4,底层为v_1, v_2, v_3, v_4,因此它看起来像冠图。但是,我不确定如何告诉dot这样做。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

控制节点布局的一些有用技巧包括:

combined时最有用。

在这种特殊情况下,您可以在边缘应用 constraint=false ,以免影响布局,并添加隐形边以定位节点

在节点声明和边缘列表之间插入以下位(在第9行之后):

  edge[style=invis]
  u1 -- v1
  u2 -- v2
  u3 -- v3
  u4 -- v4
  edge[style=visible, constraint=false]