Любой способ использовать один механизм визуализации Графика (например, fdp) для координат узла, и использовать другой механизм визуализации Графа (например, точка) для краев? - PullRequest
2 голосов
/ 28 марта 2019

Я заметил, что 'fdp' генерирует графы с очень хорошим расположением узлов для графа, который я пытаюсь создать. Однако ребра между узлами являются прямыми линиями, а иногда узлами перекрываются.

Я заметил, что механизм точечного рендеринга очень хорошо удерживает края от наложения до тех пор, пока у него нет выбора, и даже тогда делает границы четкими, устанавливая приоритеты пересечений только тогда, когда направления не похожи, чтобы их можно было легко идентифицировать.

Я хотел бы использовать fdp для генерации координат узла моего графа, а затем использовать точку для выполнения остальной части работы. Я надеялся, что существует каноническое или, по крайней мере, существующее решение.

Если это невозможно, мне также интересно, почему.

1 Ответ

0 голосов
/ 02 апреля 2019

Вы не можете использовать разные механизмы рендеринга для узлов и ребер отдельно. Но ваша проблема все еще имеет решение:

Каждый тип графика в Graphviz имеет специальный атрибут: сплайны . Вы можете установить splines=curved или splines=polyline в своем файле, чтобы fdp использовал их и попытался избежать раздражающего наложения.

graph {
    splines=polyline;
    a -- b;
    b -- c;
    a -- c;
    d -- c;
    e -- c;
    e -- a;
}

P.S. Многие макеты используют информацию об узлах и ребрах для расчета положения узлов и формы ребер, поэтому они используются как есть. Это ОЧЕНЬ редкий случай, когда кому-то нужен один алгоритм для узлов, а другой для ребер, поэтому никто не реализует его. Может быть, это возможно с некоторыми грязно-грязными взломами, но это не должно использоваться в любом случае.

...