graphviz dot:如何将箭头从节点插入箭头的中心

gre*_*gor 9 dot graphviz

我尝试使用graphviz包中的点创建MPLUS分析图.有没有人有使用点来显示结构方程模型/潜类混合模型的经验?特别有一个功能我无法弄清楚如何做得很漂亮:

我需要从节点到另一个箭头的中心的箭头

           C
           |
           |
           V
   A ------------> B
Run Code Online (Sandbox Code Playgroud)

我试图在箭头的交叉处插入一个不可见的节点.然而,这导致"破裂的"A ---> B箭头,因为点确实将其表示为两个独立的箭头.这点甚至可以用点?

感谢您的建议和帮助!

格雷戈尔

mar*_*pet 10

以spenthil的答案为基础摆脱扭结:

digraph {
  ab[label="", fixedsize="false", width=0, height=0, shape=none];

  a -> ab[arrowhead=None];
  ab -> b;
  c -> ab;

  {rank=same; a; ab; b};
}
Run Code Online (Sandbox Code Playgroud)

输出:

graphviz输出

另一种可能性是使用weight边缘的属性来拉直边缘.


spe*_*hil 5

以下内容可防止"破裂"箭头.不幸的是,Dot a -> abab->b边缘之间引入了扭结.不知道阻止这种情况的布局算法.

digraph {
  a;
  ab[label="", fixedsize="false", width=0, height=0, shape=none];
  b;
  c;

  a -> ab[arrowhead=None];
  ab -> b;
  c -> ab;
}
Run Code Online (Sandbox Code Playgroud)

输出:

替代文字