graphviz:箭头"通过"盒子,而不是"从 - 到"框

时间:2017-11-07 09:44:54

标签: graphviz dot

我想让箭头"通过" 一个框,而不是从一个框到另一个框。有没有办法在graphviz中完成这个(见下文)?

enter image description here

为什么我要问:我有一些数据流图,其中来自实体的多个输出通过同一个实体传递给最后一个实体,graphviz输出如下所示:

enter image description here

例如,我发现这并不好,也无法识别。)

1 个答案:

答案 0 :(得分:1)

这并不存在于graphviz中。

如何简单地省略从A / B到C的边缘的箭头?

digraph G {
    node[shape=box];
    {A;B} -> C [arrowhead=none];
    C -> D;
    C -> D;
}

编辑:除非,你真的想要这样做......

...然后你可以使用HTML-like labels作为应该有边穿过的节点,在标签中定义ports以附加边(在这种情况下," ww&#34和" ee"),并且有一个边缘没有箭头的边缘,以及从箭头头端口离开的边缘,产生穿过端口的单箭头的错觉(这不可见)。

obscure graphviz solution with edges crossing through a node

digraph G {
    node[shape=box];
    C[label=<
    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" CELLPADDING="0">
    <TR>
    <TD port="ww"></TD>
    <TD></TD>
    <TD port="ee"></TD>
    </TR>
    <TR>
    <TD></TD>
    <TD CELLPADDING="5">C</TD>
    <TD></TD>
    </TR>
    </TABLE>
    >];
    A -> C:ww:n [arrowhead=none];
    B -> C:ee:n [arrowhead=none];
    C:ww:s -> D;
    C:ee:s -> D;
}

为了有箭头曲线,我还为边缘定义了罗盘点 - 罗盘点是n / e / s / w并确定边缘应该进入/离开的哪一侧