排名属性让我感到困惑。

49

边的排名属性有五个值,分别是"same"、"min"、"source"、"max"和"sink"。除了"same"之外,我不知道何时使用其他值。

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个回答

66
留空排名或使用rank=same的情况更为常见。这另外四个通常只在特殊情况下使用。
当单独使用时,min和source具有相同的功能:将所有这些节点放在最小排名上(TB图的顶行)。它们之间的区别在于,min将允许其他子图在最小排名上。而source则不会。source只允许其他min或source的子图位于最小排名上。
考虑以下图形片段:
{ rank=source; a -> b; }
{ rank=same;   c -> d; }

你最终会得到两行。a -> b 会在 c -> d 上方。

Source


如果将源代码更改为min,您将只获得一行。 a -> b将在c -> d左侧,全部位于最小等级。
{ rank=min;    a -> b; }
{ rank=same;   c -> d; }

Min

Max和sink是图表底部的等效词。


59
如果有人决定为Graphviz写一份良好的文档并出售,那么他将在一个月内成为亿万富翁。 - Dany
有人可以把这个转化成图片吗,这样更容易理解。谢谢。 - Robert DROP TABLE STUDENTS
考虑第一个例子,如果要在 c -> d 下方显示另一对连接节点 { rank=???; e -> f; },它们的排名应该是多少? - Marco Lackovic
1
@MarcoLackovic,{rank=same; e->f; } 怎么样? - Jean-Francois T.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接