在graphviz(dot2tex)中控制节点的布局?

时间:2011-07-18 20:41:10

标签: layout positioning graphviz dot dot2tex

我是graphviz的新手,我只是想知道如何确定图中的相对节点定位。例如,如果我想绘制一个简单的三角形'abc',节点'a'位于顶部,节点'b'和'c'位于底部的同一级别,我该如何告诉graphviz布局节点是否符合要求?

我尝试了以下内容:

graph G
{
   node [shape="circle"];
   edge [lblstyle="auto"];

   {rank=min; "a"}
   a -- b [label = "-"];
   a -- c [label = "-"];
   {rank=same; "b" "c"}
   b -- c [label = "+"];
}

但是输出将节点“a”和“b”定位在顶部的同一级别上,节点“c”位于底部。

此外,是否可以在同一图表中并排绘制两个这样的三角形(中间有适当的空间)?如果是的话,它是如何实现的?

非常感谢。

1 个答案:

答案 0 :(得分:4)

  

但是输出将节点'a'和'b'定位在同一级别上   顶部,底部有节点“c”。

我实际上得到了一个顶部,居中于b和c之上(见图)。

你的标记,稍微简化了(什么是 lblstyle ?),似乎达到了用点渲染时的效果:

graph G
{
   node[shape=circle];

   a -- b [label = "-"];
   a -- c [label = "-"];
   {rank=same; b -- c [label="+"];}
}

graphviz triangle FTW

您使用的是什么版本的graphviz?

并排两个三角形:

graph G
{
   node[shape=circle];
   edge[label="-"];


   a -- b;
   a -- c;
   {rank=same; b -- c [label="+"];}

   d -- e;
   d -- f;
   {rank=same; e -- f [label="+"];}
}

但是,如果事情变得更复杂,可能很难将graphviz布局完全按照自己的意愿进行布局。这实际上是graphviz的优势 - 应用布局算法以便不让用户进行干预。