3

我是 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”在底部。

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

非常感谢。

4

1 回答 1

6

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

我实际上得到了 a ,居中于 b 和 c 上方(见图)。

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

graph G
{
   node[shape=circle];

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

graphviz 三角形 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 的优势 - 应用布局算法以避免用户干预。

于 2011-07-18T21:12:11.660 回答