如何指示点使用较短的边缘路径?

时间:2014-06-08 15:03:19

标签: graphviz dot

下图几乎完美地排列,除了左边缘和#34;命名管道#34;节点到了#34; cat",它采用了一条很长的迂回路线,而不是我在下图中用红色标记的明显的短路线。有没有办法引导点使用短边路径?请注意,图表底部的序列图必须按当前显示的顺序呈现,即按从左到右的顺序。

enter image description here

这是绘制图表的代码。

digraph D {
fontname="Arial";
subgraph cluster_async {
    label="Asynchronous processes";
    style=filled;
    color=lightgrey;

    node [shape=box, style=solid, fillcolor=white, fontname="Arial"];
    {
        rank=same;
        npi_0_0_0 [label="named\npipe"];
        npi_0_3_0 [label="named\npipe"];
        npi_0_2_0 [label="named\npipe"];

    }

    node [shape=box, style=bold];
    tee [label="sgsh-tee"];
    "ls -l" -> tee;
    tee -> npi_0_0_0;
    tee -> npi_0_3_0;
    tee -> npi_0_2_0;

    NBYTES [label="sgsh-writeval -s NBYTES"];
    npi_0_3_0 -> "awk '{s += $5} END {print s}'" -> NBYTES;

    NDIRS [label="sgsh-writeval -s NDIRS"];
    npi_0_2_0  -> "grep -c '^d'" -> NDIRS;

    // Put some order in the appearance
    {
        rank=same;
        NDIRS;
        NBYTES;
    }
}

subgraph clustersync {
    label="Synchronous sequence";
    style=dashed;
    start [shape=circle, style=filled, label="", fillcolor=black, width=.2];
    node [shape=box, style=bold, fontname="Arial"];
    npi_0_0_0:sw -> cat:nw [constraint=false];
    "sgsh-readval -s NDIRS" -> echo;
    "sgsh-readval -s NBYTES" -> echo;

    NBYTES -> "sgsh-readval -s NBYTES";
    NDIRS -> "sgsh-readval -s NDIRS";

    end [shape=doublecircle, style=filled, label="", fillcolor=black, width=.2];
    {
        rank=same;
        edge [arrowhead=open];
        start -> cat -> echo -> end;
    }
}
}

(如果您对此感兴趣,该图表说明了sgsh中示例的设置。)

1 个答案:

答案 0 :(得分:1)

对于此图,设置splines=ortho将产生理想的结果。 enter image description here