Отображение надписей по краю при использовании Graphviz

91

Я использую Graphviz 2.30. Горизонтальное позиционирование этикеток работает, но в некоторых случаях желательно изменить угол.

Например, здесь я пробовал разные значения угла, но без всякого эффекта:

ABB -> ABACUS[label="applied", fontname="Arial", fontsize=15, labelangle=110];

Как я могу отображать метки на одной линии (т.е. параллельно) краю при использовании Graphviz digraph.

Все digraphне будет опубликовано из-за NDA. Кроме того, поворот будет применен только к нескольким этикеткам.

Я читал похожие темы, подобные этому или другому (или, например, о выравнивании), но без какой-либо помощи в отношении моей проблемы.

мнемонический
источник
2
'labelangle' работает только с заголовками и taillabels, кроме того, он не поворачивает метку, а только определяет (вместе с labeldistance), где разместить метку (которая по-прежнему является горизонтальной линией). Угол 0 идет от начальной / конечной точки по краю. С углом + / - этикетки можно печатать над или под краем. При расстоянии 0 угол не влияет. Я также был бы очень заинтересован в том, чтобы метки поворачивались по краям, что до сих пор не решено.
bug313 05
1
У меня такое чувство, что это просто невозможно сделать. Но поскольку отсутствие функций редко документируется (это привело бы к бесконечному количеству документации), трудно написать авторитетный ответ по этому поводу. Если только вы не укажете, что ничего подобного не упоминается ни во всей документации, ни в каком-либо неясном уголке кодовой базы.
bigblind
1
Все текстовые элементы в Graphviz во время позиционирования ограничиваются обычным прямоугольником. Алгоритм очень старается избежать пересечения этих границ бокса во время размещения краев. Если бы этикетку можно было повернуть, эти прямоугольники стали бы намного больше, что привело бы к значительному давлению на область отображения. Если метки могут перекрывать края или узлы, их можно будет повернуть позже в конвейере формирования изображений.
Пекка
1
на самом деле вы можете найти это в документации: github.com/ellson/graphviz/blob/master/doc/internal_todo.html "? - Разрешить текст под углом"
МК.

Ответы:

6

Использование dot2latex позволяет указать lblstyleатрибут. Значение lblstyleиспользуется PGF / TikZ при генерации PDF.

Можно указать параллельные метки следующим образом:

digraph G {
    edge [lblstyle="above, sloped"];
    a -> b [label="ab"];
    b -> c [label="bc"];
    c -> a [label="ca"];
}

Чтобы сгенерировать PDF

$ dot2tex --tikzedgelabel file.dot > file.tex
$ pdflatex file.tex

Результат

введите описание изображения здесь

Мальбарбо
источник
К сожалению, при построении графика вам придется знать углы всех меток; OP хотел бы отображать свои метки параллельно краю, под каким бы углом ни находился край.
Galax
1
@Galax Спасибо за ваш комментарий. Я зафиксировал ответ.
malbarbo
Отличная находка - это удобная фишка dot, раньше не замечал (а может новинка).
Galax
-1

Изменить: в другом ответе была обнаружена возможность выровнять текст по краям.

Лучшим вариантом может быть экспорт графика в виде файла SVGи его использование Illustratorили Inkscapeего точная настройка. Это практично только при создании нескольких графиков.

Мне часто приходится настраивать вывод из Graphvizи Gephi; они дают мне хорошую отправную точку.

Галакс
источник