2011-01-12 80 views
21

我正在尝试使用Graphviz点(但愿意使用其他方法)来生成具有长“主线”节点的图形,和许多小分支机构。我希望主线从左到右是直的,小分支在上面或下面。然而,Graphviz“平衡”了两个分支,所以我最终得到了一个歪曲的图。在Graphviz(或其他选项)中强制“主线”节点变成直线

为了说明这一点,这里有一个草图相似,我目前得到:

Current Graph

这是我真正想要的:

Wanted graph

有没有办法强迫或鼓励Graphviz像第二个那样生成一个图表?我可以使用“虚拟”第二个分支来进行三维布局,然后隐藏/删除虚拟模型,但是如果有更好的选择,则更可取。

回答

28

下面是使用边缘的重量属性的溶液:

digraph G { 
    rankdir="LR"; 
    node[width=0.15, height=0.15, shape=point]; 
    edge[weight=2, arrowhead=none]; 
    1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8; 
    edge[weight=1]; 
    2 -> 9 -> 10 ; 
    5-> 11 -> 12; 
} 

结果:

graphivz

+0

这似乎在伎俩,但它似乎要求该图被定向。矿被定义为无向,但没有特别的理由需要,所以应该起作用。谢谢。 – 2011-01-12 17:50:01

+0

我不确定这是否可能作为一个无向图,但我很高兴这对你有用。 – marapet 2011-01-12 20:45:59

28

使用节点的属性的第二溶液 - 再定向图:

从th Ègraphviz的点参考:

如果边缘的端点属于 的同一组,即,具有相同的 组属性,参数设定为 避免交叉和保持边缘 直。

所以在这里,我们去:

digraph g{ 
    rankdir="LR"; 
    node[width=0.15, height=0.15, shape=point, group=main]; 
    edge[arrowhead=none]; 
    1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8; 
    node[group=branches]; 
    2 -> 9 -> 10; 
    5 -> 11 -> 12; 
} 

输出是完全一样在我的第一个答案。

相关问题