Rank属性让我很困惑

时间:2011-05-27 08:45:46

标签: graphviz dot

边缘上的Rank属性有五个值“same”,“min”,“source”,“max”,“sink”。 除了“相同”,我不知道何时使用其他值。

min
\begin{dotpic}
  rankdir=LR;
  size="7,5";
  node[shape=circle];
  C->A;
  {rank=min;A;B}
  B->D
  A->B;
\end{dotpic}

max
\begin{dotpic}
  rankdir=LR;
  size="7,5";
  node[shape=circle];
  C->A;
  {rank=max;A;B}
  B->D
  A->B;
\end{dotpic}

source
\begin{dotpic}
  rankdir=LR;
  size="7,5";
  node[shape=circle];
  C->A;
  {rank=source;A;B}
  B->D
  A->B;
\end{dotpic}

sink
\begin{dotpic}
  rankdir=LR;
  size="7,5";
  node[shape=circle];
  C->A;
  {rank=sink;A;B}
  B->D
  A->B;
\end{dotpic}

通过对我的vim环境进行测试,我可以发现这些值存在一些差异。 但是不知道它们到底是什么。

1 个答案:

答案 0 :(得分:39)

将排名保持为空或使用rank =相同更常使用。这四个通常只在特殊情况下使用。

单独使用时,min和source具有相同的功能:将所有节点置于最小等级(TB图的顶行)。它们之间的区别在于min将允许最小等级的其他子图。来源不会。 Source只允许min或source的其他子图位于最低等级。

请考虑以下图表摘要:

{ rank=source; a -> b; }
{ rank=same;   c -> d; }

最终会有2行。 a - > b将高于c - >; d。

Source


如果您将source更改为min,则只会获得一行。 a - > b将离开c - >; d,全部在最低等级。

{ rank=min;    a -> b; }
{ rank=same;   c -> d; }

Min

Max和sink是图表底部的等价物。