Я хочу иметь большую точку (или нечто подобное) в центре некоторых краев. Следующий код - лучшее, что я смог произвести.Как сделать края украшены большой точкой в Graphviz?
digraph BDD {
ordering = out;
splines = true;
edge [arrowhead="none"];
node [shape = none, label = "SUM"] 0;
node [shape = circle, label = "x"] 1;
node [shape = circle, label = "y"] 2;
node [shape = circle, label = "w"] 3;
node [shape = none, label = "1"] 4;
node [shape = circle, label = "z"] 5;
node [shape = none, label = "1"] 6;
node [shape = circle, label = "y"] 7;
node [shape = circle, label = "w"] 8;
node [shape = none, label = "1"] 9;
0 -> 1;
1 -> 2;
1 -> 7 [arrowhead="dot"];
2 -> 3;
2 -> 5 [arrowhead="dot"];
3 -> 4 [arrowhead="dot"];
3 -> 4;
5 -> 6 [arrowhead="dot"];
5 -> 6;
7 -> 5;
7 -> 8;
8 -> 9;
8 -> 5;
}
Это произведет следующее изображение, которое не совсем верно, поскольку точки находятся на конце краев.
Может кто-нибудь предложить мне решение, чтобы произвести это:
EDIT 1: с помощью дополнительных узлов в точках создает неприемлемый выход.
digraph BDD {
ordering = out;
splines = true;
edge [arrowhead="none"];
node [shape = none, label = "SUM"] 0;
node [shape = circle, label = "x"] 1;
node [shape = circle, label = "y"] 2;
node [shape = circle, label = "w"] 3;
node [shape = none, label = "1"] 4;
node [shape = circle, label = "z"] 5;
node [shape = none, label = "1"] 6;
node [shape = circle, label = "y"] 7;
node [shape = circle, label = "w"] 8;
node [shape = none, label = "1"] 9;
0 -> 1;
1 -> 2;
node [shape = point width=0.1] p1p7;
1 -> p1p7 -> 7;
2 -> 3;
node [shape = point width=0.1] p2p5;
2 -> p2p5 -> 5;
node [shape = point width=0.1] p3p4;
3 -> p3p4 -> 4;
3 -> 4;
node [shape = point width=0.1] p5p6;
5 -> p5p6 -> 6;
5 -> 6;
7 -> 5;
7 -> 8;
8 -> 9;
8 -> 5;
}
EDIT 2: Я могу также принять график, где точки не точно по центру. Они только не должны касаться узла, то есть, возможно, было бы хорошо, если бы я мог установить/сделать расстояние между стрелкой и узлом.
Это работает в тривиальном примере, но, к сожалению, он дает неприемлемый вывод для реальных примеров. Как показано в отредактированном вопросе, есть два очень плохих свойства. Во-первых, линии между узлами теперь состоят из 2 частей, например. y-z не является прямым, а во-вторых, дополнительные точки очень сильно меняют ранги узлов. – meolic
В этом случае вам приходится иметь дело с манипулированием сплайнами самостоятельно. см. мое редактирование. – stefan
В моем ответе было неправильное определение правильных 4-х кортежей. Я исправил это и добавил также возможность прямого использования точек переключения сплайнов. – stefan