У меня есть программа, которая автоматически генерирует точечные графики, представляющие структуру системы. Система определяется пользователем с использованием системы уравнений.
Я бы хотел, чтобы точка отображала только прямые и ортогональные ребра между узлами. Расположение узлов может быть где угодно, если эти два требования соблюдены.
Например, я хочу предотвратить краевые углы, которые генерирует следующий код:
digraph R {
graph [splines=ortho, nodesep=1]
node [shape=record];
rA -> sA;
sA -> vB;
t -> rA;
uB -> vB;
wB -> u;
wB -> tA;
}
Я обнаружил, что одним из способов достижения этого является использование атрибута rank
. Например:
digraph R {
graph [splines=ortho, nodesep=1]
node [shape=record];
{ rank=same rA sA tA }
{ rank=same uB vB wB }
rA -> sA;
sA -> vB;
t -> rA;
uB -> vB;
wB -> u;
wB -> tA;
}
Однако использование атрибута rank
не решает мою проблему, поскольку было бы очень трудно автоматизировать это для любого графика . Логика присвоения рангов (которая влияет на размещение узлов) каждому узлу будет чрезвычайно сложной (графики могут стать довольно большими). Я хочу знать, есть ли другой способ получения этого вывода, который не требует использования атрибута rank
.