Відображати мітки відповідно до краю під час використання Graphviz


91

Я використовую Graphviz 2.30. Горизонтальне позиціонування етикеток працює, але в деяких випадках бажаний змінений кут.

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

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

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

Весь текст digraphне буде розміщений через NDA. Крім того, обертання застосовуватиметься лише до кількох міток.

Я читав подібні теми, як цей чи інший (або ланцюжок про вирівнювання, наприклад), але без будь-якої допомоги щодо моєї проблеми.


2
'labelangle' працює лише із заголовками та підвісними ярликами, крім того, він не обертає мітку, а лише визначає (разом із відстанню ярлика), де розмістити мітку (яка все ще є горизонтальною лінією). Кут 0 йде від початкової / кінцевої точки по краю. З кутом + / - мітки можна надрукувати над або під краєм. При відстані 0 кут відсутній. Мені також було б дуже цікаво, щоб ярлики оберталися, щоб слідувати краям, що, досі, не вирішено.
bug313

1
У мене виникає відчуття, що просто немає можливості цього зробити. Але оскільки відсутність функцій рідко документується (це призвело б до нескінченної кількості документації), важко написати про це авторитетну відповідь. Хіба що ви можете зазначити, що ні про що подібне не згадується ні в усій документації, ні в незрозумілому куточку кодової бази.
великий сліпий

1
Елементи тексту в Graphviz обмежені звичайним полем під час позиціонування. Алгоритм дуже намагається уникнути перетину цих меж вікна під час розміщення краю. Якби мітку можна було повертати, ці коробки стали б набагато більшими, що спричинило б значний тиск на область відображення. Якщо мітки можуть перекривати краї або вузли, їх можна буде повернути пізніше в конвеєрі зображень.
Пекка,

1
насправді ви можете знайти це в документації: github.com/ellson/graphviz/blob/master/doc/internal_todo.html "? - Дозволити текст під кутом"
MK.

Відповіді:


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

Результат є

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


На жаль, вам довелося б знати кути всіх міток під час створення графіку; ОП хотіли б відображати свої мітки паралельно краю, під яким би кутом не знаходився край.
Galax,

1
@Galax Дякую за ваш коментар. Я зафіксував відповідь.
malbarbo

Чудова знахідка - це корисна особливість dot, я раніше цього не помічав (або, можливо, це нове).
Galax,

-1

Редагувати: інша відповідь знайшла варіант, який зараз існує, щоб вирівняти текст по краях.

Найкращим варіантом може бути експорт графіку як SVGі використання Illustratorабо Inkscapeйого точне налаштування. Це практично лише при складанні кількох графіків.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.