Graphviz: Поместите метку края с другой стороны (II)

связанные вопросы:

Graphviz: Поместите метку края на другую сторону

Как разместить метки границ на краю в graphviz

Рассмотрим следующий файл точек:

digraph {
0 -> 1 [ len=2, label="(1, 0)"];
0 -> 1 [ len=0.5, dir=none, weight=10];
1 -> 0 [ len=2, label="(0, -1)"];
}

дает следующий результат:

enter image description here

Как мне получить симметричную версию? (0,-1) следует оставить справа от egde.

Ответ 1

Как вы узнали, графический интерфейс не позволяет выбирать горизонтальное размещение меток, поэтому все решения немного взломаны.

Попытка № 1: два решения, отправленные марапетом (здесь)

  • Трюк с меткой и лабораторным сопротивлением плохо адаптируется к различной длины текста ярлыка (вам придется пересчитывать новые расстояния/угла).

  • Сплайн = ложный трюк работает не так хорошо, когда число   ребра между узлами > количество узлов (в итоге вы   перекрывающиеся края).

Попытка # 2: xlabels и anchors для создания кривых краев

Это использует относительно новую функцию graphviz, xlabel (которая помещает метку ПОСЛЕ координат для узлов/ребер приняли решение). Функция ports используется для создания кривых краев. Наложение меток выполняется с помощью пробелов.

gv

digraph {
forcelabels=true;

    0:sw -> 1:nw [ dir=forward, xlabel="  (1, 0)  "];
    0 -> 1 [dir=none];
    1:ne -> 0:se [ dir=backward, xlabel= "  (0, -1)  "];

}

Я считаю, что вам нужна версия graphviz > 2.29 для использования xlabel.