【问题标题】:Control the layout of nodes in graphviz (dot2tex)?控制graphviz(dot2tex)中节点的布局?
【发布时间】:2011-07-18 20:41:10
【问题描述】:

我是 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' 位于底部。

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

非常感谢。

【问题讨论】:

    标签: layout positioning graphviz dot dot2tex


    【解决方案1】:

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

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

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

    graph G
    {
       node[shape=circle];
    
       a -- b [label = "-"];
       a -- c [label = "-"];
       {rank=same; b -- c [label="+"];}
    }
    

    你使用什么版本的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 的优势 - 应用布局算法以避免用户干预。

    【讨论】:

    • 我实际上正在使用 dot2tex 包:fauskes.net/code/dot2tex/documentation。我将您上面的构造复制到 LaTeX 文档中,它不会产生与您能够获得的相同的图形,而是给了我原始帖子中描述的图形。
    • 这解释了 lblstyle - 抱歉,我对那个包没有任何经验。没关系我的回答...
    • {rank=same; e -- f [label="+"];} 在 Confluence 流程图宏中为我工作。
    猜你喜欢
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2011-05-13
    相关资源
    最近更新 更多