Рассмотрим этот небольшой график:
digraph G {
{rank = same; node12; node11;}
node11 [ label = "node left", shape=square ]
node11 -> node11 [label=" i[2,9]"]
node11 -> node12 [label=" k[2]"]
node12 [ label = "node right", shape=square ]
node12 -> node12 [label=" i[9]"]
}
Я преобразовал его в PDF с dot -Tpdf
$ dot -V
dot - graphviz version 2.40.1 (20161225.0304)
Как вы можете видеть (само-) петля левого узла и ребра, соединяющие левый и правый узлы, перекрываются.Я пытался исправить это, используя функциональность compass в Graphviz.Моей первой попыткой было: node11:w -> node11:w [label=" i[2,9]"]
:
Однако полученная форма цикла изменилась.Я не хочу этого, и я согласен, что это выглядит уродливее .Увеличение nodesep=1;
не дает вам ту же форму, что и правильная.Конечно, вы можете сделать правый цикл идентичным левому, добавив :e
.Но я предпочитаю форму оригинальной правой петли.
Есть ли какие-либо другие возможности для достижения этой цели?
Кстати: рисование графика Mathematica здесь более умное: оно автоматически помещает сам цикл в другую.боковая сторона.Но ИМХО нужно много настроек, чтобы получить нейтральный стиль:
Graph[{1 -> 1, 1 -> 2, 2 -> 2},
EdgeLabels -> {(1 -> 1) -> "i[2,9]", (1 -> 2) -> "k[2]", (2 -> 2) ->
"i[9]"}, EdgeLabelStyle -> Directive[15, Background -> White],
VertexSize -> 0.3, VertexShapeFunction -> "Rectangle",
VertexStyle -> White, EdgeStyle -> Black,
VertexLabels -> {1 -> Placed["node left", Center],
2 -> Placed["node right", Center]}]
И просто для ясности: это только фрагментграф.Окончательный график выглядит так: