Просто для удовольствия, другой способ, который я только что нашел:
Путем принудительного выравнивания прямых ребер между узлами с использованием splines=false
и определения ребер дважды, ребра отрисовываются так, как если бы они были одним ребром, но метки каждого ребра, которые получаются, рисуются (большую часть времени) с разных сторон край.
Поэтому, имея один край без метки, а другой - с меткой, можно влиять на размещение меток (-ей) для края.
Ваш пример:
digraph hierarchy_of_D {
splines=false;
node [color=black,shape=circle]
I [label="R"]
subgraph infoset1
{
rank="same"
1 [label="C"]
2 [label="C"]
}
I -> 1 [label="War "]
I -> 1 [label=" "]
I -> 2 [label=""]
I -> 2 [label="Peace"]
1 -> 2 [style=dashed, dir=none]
subgraph info21
{
rank="same"
3 [label="(2,2)", rank=sink, shape="plaintext"]
4 [label="(5,1)", rank=sink, shape="plaintext"]
5 [label="(1,5)", rank=sink, shape="plaintext"]
6 [label="(4,4)", rank=sink, shape="plaintext"]
}
1 -> 3 [label="War"]
1 -> 3 [label=""]
1 -> 4 [label=""]
1 -> 4 [label="Peace"]
2 -> 5 [label=""]
2 -> 5 [label="War "]
2 -> 6 [label=""]
2 -> 6 [label="Peace"]}
И вывод:
Это не идеально, и ваш пробег может варьироваться в зависимости от графика, но я подумал, что стоит упомянуть об этом.