graphviz dot: как вставить стрелки из узла в центр стрелки

Я пытаюсь создать диаграммы для анализа MPLUS с точкой из пакета graphviz. У кого-нибудь есть опыт использования dot для визуализации моделей структурных уравнений/моделей латентной смеси классов? Есть особенно одна особенность, которую я не могу понять, как это сделать красиво:

Мне нужны стрелки от узлов к центру другой стрелки, например

           C
           |
           |
           V
   A ------------> B

Я попытался вставить невидимый узел на пересечении стрелок. Это, однако, результаты в" трещины " a--->b стрелка, потому что точка представляет его как две независимые стрелки. Это вообще возможно с точки?

Спасибо за предложения и помощь!

Грегор

2 ответов


основываясь на ответе 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};
}

выход:

graphviz output

другой возможностью было бы играть с weight атрибут ребер для выравнивания ребер.


следующее предотвращает" треснувшие " стрелки. Точка, к сожалению, вводит перегиб между a -> ab и ab->b края. Не знаю алгоритма компоновки, который предотвращает это.

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

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

выход:

alt text