web-dev-qa-db-fra.com

Afficher les étiquettes en ligne avec le bord lors de l'utilisation de Graphviz

J'utilise Graphviz 2.30. Le positionnement horizontal des étiquettes fonctionne, mais dans certains cas, un angle modifié serait souhaité.

Par exemple, j'ai essayé différentes valeurs d'angle ici mais sans aucun effet:

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

Comment puis-je afficher des étiquettes en ligne (c'est-à-dire parallèles à) l'Edge lors de l'utilisation d'un Graphviz digraph.

Le digraph entier ne sera pas publié en raison d'un NDA. De plus, la rotation ne sera appliquée qu'à quelques étiquettes.

J'ai lu des discussions similaires comme ceci ou ne autre (ou une discussion sur l'alignement par exemple) mais sans aucune aide concernant mon problème.

89
mnemonic

L'utilisation de dot2latex vous permet de spécifier l'attribut lblstyle . La valeur de lblstyle est utilisée par PGF/TikZ dans la génération de pdf.

On peut spécifier des étiquettes parallèles comme ceci:

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

Pour générer le pdf

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

Le résultat est

enter image description here

3
malbarbo

Modifier: une autre réponse a trouvé une option qui existe maintenant pour aligner le texte avec les bords.

Votre meilleure option peut être d'exporter le graphique en tant que SVG et d'utiliser Illustrator ou Inkscape pour l'affiner. Ceci n'est pratique que lors de la production de quelques graphiques.

Je dois fréquemment tordre la sortie de Graphviz et Gephi; ils me donnent cependant un bon point de départ.

0
Galax