Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphviz 图形:箭头“;透过「;盒子,而不是;从-to";箱_Graphviz_Dot - Fatal编程技术网

Graphviz 图形:箭头“;透过「;盒子,而不是;从-to";箱

Graphviz 图形:箭头“;透过「;盒子,而不是;从-to";箱,graphviz,dot,Graphviz,Dot,我想让箭头穿过一个盒子,而不是从一个盒子到另一个盒子。有没有办法在graphviz中实现这一点(见下文) (为什么我要问:我有一些数据流图,其中一个实体的多个输出通过同一个实体传递到最后一个实体,graphviz输出如下所示: 例如,我觉得这不好,也不容易辨认。)这在graphviz中不存在 把A/B到C的边上的箭头省略掉怎么样 digraph G { node[shape=box]; {A;B} -> C [arrowhead=none]; C -> D

我想让箭头穿过一个盒子,而不是从一个盒子到另一个盒子。有没有办法在graphviz中实现这一点(见下文)

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


例如,我觉得这不好,也不容易辨认。)

这在graphviz中不存在

把A/B到C的边上的箭头省略掉怎么样

digraph G {
    node[shape=box];
    {A;B} -> C [arrowhead=none];
    C -> D;
    C -> D;
}
编辑:除非你真的想这么做

。。。然后,您可以使用应具有交叉边的节点,在标签内定义要将边附着到的节点(在本例中为“ww”和“ee”),并使边不带箭头指向端口,以及使边带箭头离开端口,从而创建单个箭头穿过端口的假象(其本身不可见)

有向图G{
节点[shape=box];
C[标签=<
C
>];
A->C:ww:n[箭头=无];
B->C:ee:n[箭头=无];
C:ww:s->D;
C:ee:s->D;
}

为了获得更好的箭头曲线,我还为边缘定义了指南针点-指南针点为n/e/s/w,并确定边缘应该从哪一侧进入/离开。

令人印象深刻!您能否详细说明一下第二个图形的工作原理?我假设我们定义了一个表,然后附加一个“无头”箭头指向表格并穿过表格?我为第二个图表添加了一些解释。请注意,这些类型的解决方案(黑客…)可能不适用于更大、更复杂的图表。
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;
}