2011-07-18 68 views
3

我是graphviz的新手,我只是想知道如何确定图形中的相对节点位置。例如,如果我想绘制一个简单的三角形'abc',其中节点'a'位于顶部,节点'b'和'c'位于底部相同的位置,我应该如何告诉graphviz布置根据需要节点?控制graphviz(dot2tex)中节点的布局?

我尝试以下:

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

但输出将顶部的 顶部的节点'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的优势 - 应用布局算法以避免用户干预。

+0

我实际上使用dot2tex包:http://www.fauskes.net/code/dot2tex/documentation/。我将上面的构建复制到了LaTeX文档中,并且它不会生成与您能够获得的相同的图形,相反,它给了我原始文章中描述的图形。 – skyork

+0

这解释了lblstyle - 对不起,我对这个软件包没有任何经验。没关系我的回答... – marapet