2012-10-25 38 views
4

我用dot -Tsvg做了一个图表。dot/graphviz:如何强制2个节点并排

这点语言文件我提出:

digraph genealogy { 
    size = "7,7"; 
    node [fontsize = "10", shape = "box", style="filled", fillcolor="aquamarine"]; 
    p1 [ fillcolor="aquamarine", label="node" ]; 
    p2 [ fillcolor="aquamarine", label="node" ]; 
    p3 [ fillcolor="aquamarine", label="node" ]; 
    p4 [ fillcolor="aquamarine", label="node" ]; 
    p5 [ fillcolor="aquamarine", label="node" ]; 
    p6 [ fillcolor="aquamarine", label="node" ]; 
    p7 [ fillcolor="aquamarine", label="node" ]; 
    p8 [ fillcolor="aquamarine", label="node" ]; 
    p9 [ fillcolor="aquamarine", label="node" ]; 
    p11 [ fillcolor="aquamarine", label="node" ]; 
    p12 [ fillcolor="aquamarine", label="node" ]; 
    p13 [ fillcolor="aquamarine", label="node" ]; 
    p16 [ fillcolor="aquamarine", label="node" ]; 
    p17 [ fillcolor="aquamarine", label="node" ]; 
    b1 [ shape = "point", style="filled", fillcolor="white" ]; 
    p3 -> b1 [arrowhead = "none", color="red"]; 
    b2 [ shape = "point", style="filled", fillcolor="white" ]; 
    p2 -> b2 [arrowhead = "none", color="red"]; 
    p3 -> b2 [arrowhead = "none", color="red"]; 
    b3 [ shape = "point", style="filled", fillcolor="white" ]; 
    p4 -> b3 [arrowhead = "none", color="red"]; 
    p5 -> b3 [arrowhead = "none", color="red"]; 
    b4 [ shape = "point", style="filled", fillcolor="white" ]; 
    p6 -> b4 [arrowhead = "none", color="red"]; 
    p11 -> b4 [arrowhead = "none", color="red"]; 
    b2 -> p1 [arrowhead = "onormal", color="red"]; 
    b3 -> p2 [arrowhead = "onormal", color="red"]; 
    b3 -> p6 [arrowhead = "onormal", color="red"]; 
    b3 -> p7 [arrowhead = "onormal", color="red"]; 
    b4 -> p8 [arrowhead = "onormal", color="red"]; 
    b4 -> p9 [arrowhead = "onormal", color="red"]; 
    b1 -> p12 [arrowhead = "onormal", color="red"]; 
    b1 -> p13 [arrowhead = "onormal", color="red"]; 
    b1 -> p16 [arrowhead = "onormal", color="red"]; 
    p4 -> p5 [dir="none", arrowhead = "none", color="blue"]; 
    p7 -> p17 [dir="none", arrowhead = "none", color="blue"]; 
} 

这是结果:

我想迫使以蓝线连接的节点通过将侧侧(水平),而不是在彼此之下或在另一个疯狂的位置。

这可能吗?

感谢您的输入/意见! :)

回答

4

您可以利用排名属性。设置排名=“相同”或排名=“来源”可能会有帮助。这将两个节点放在同一级别或最低级别上。这是可能性之一:

digraph genealogy { 
    size = "7,7"; 
    node [fontsize = "10", shape = "box", style="filled", fillcolor="aquamarine"]; 

    subgraph _1 { 
    rank="same"; 
    p4 [ fillcolor="aquamarine", label="node" ]; 
    p5 [ fillcolor="aquamarine", label="node" ]; 
    p4 -> p5 [dir="none", arrowhead = "none", color="blue"]; 
} 
    subgraph _2 { 
    rank="source"; 
    p7 [ fillcolor="aquamarine", label="node" ]; 
    p17 [ fillcolor="aquamarine", label="node" ]; 
    p7 -> p17 [dir="none", arrowhead = "none", color="blue"]; 
} 

p1 [ fillcolor="aquamarine", label="node" ]; 
p2 [ fillcolor="aquamarine", label="node" ]; 
p3 [ fillcolor="aquamarine", label="node" ]; 
p6 [ fillcolor="aquamarine", label="node" ]; 
p8 [ fillcolor="aquamarine", label="node" ]; 
p9 [ fillcolor="aquamarine", label="node" ]; 
p11 [ fillcolor="aquamarine", label="node" ]; 
p12 [ fillcolor="aquamarine", label="node" ]; 
p13 [ fillcolor="aquamarine", label="node" ]; 
p16 [ fillcolor="aquamarine", label="node" ]; 
b1 [ shape = "point", style="filled", fillcolor="white" ]; 
p3 -> b1 [arrowhead = "none", color="red"]; 
b2 [ shape = "point", style="filled", fillcolor="white" ]; 
p2 -> b2 [arrowhead = "none", color="red"]; 
p3 -> b2 [arrowhead = "none", color="red"]; 
b3 [ shape = "point", style="filled", fillcolor="white" ]; 
p4 -> b3 [arrowhead = "none", color="red"]; 
p5 -> b3 [arrowhead = "none", color="red"]; 
b4 [ shape = "point", style="filled", fillcolor="white" ]; 
p6 -> b4 [arrowhead = "none", color="red"]; 
p11 -> b4 [arrowhead = "none", color="red"]; 
b2 -> p1 [arrowhead = "onormal", color="red"]; 
b3 -> p2 [arrowhead = "onormal", color="red"]; 
b3 -> p6 [arrowhead = "onormal", color="red"]; 
b3 -> p7 [arrowhead = "onormal", color="red"]; 
b4 -> p8 [arrowhead = "onormal", color="red"]; 
b4 -> p9 [arrowhead = "onormal", color="red"]; 
b1 -> p12 [arrowhead = "onormal", color="red"]; 
b1 -> p13 [arrowhead = "onormal", color="red"]; 
b1 -> p16 [arrowhead = "onormal", color="red"]; 

} 

Output is here

+0

非常感谢您! :)具有'rank =“相同”'属性的子图解决了我的问题。 – ryu

+0

很高兴能成为帮助! –