Publié par Jérémie Bresson dans les docs Jmini (http://docs.jmini.fr) à l’adresse (http://docs.jmini.fr/notes/graphe-graphviz-dot).
Dernière mise à jour : Mercredi 11 novembre 2009
Génération de graphe (Graphviz, dot, …)
Introduction
Un moyen très simple de représenter un graphe est d’utiliser les outils open sources Graphviz développés par AT&T. Le projet Graphviz regroupe un certain nombre de choses simultanément (ce qui ne le rend pas facile à appréhender au premier abord).
- le langage de description ou format DOT, qui permet de décrire des graphes dans un format texte.
- différents outils (en ligne de commande) pour faire le rendu des graphes (en fait, il y en a plusieurs, en fonction du type de rendu que l’on veut obtenir, voir plus bas ‘options avancées’).
- des librairies qui peuvent être incluses dans d’autres applications.
- des applications qui exploitent les librairies, ou le format de fichier DOT.
Premiers exemples
Fichier .dot Hello Word
La syntaxe DOT qui permet de définir les graphes est vraiment très souple. Beaucoup de choses peuvent être définies implicitement. Mentionnons par exemple :
- créer un arc entre deux noeuds, va aussi créer les deux noeuds.
- par défaut, l’étiquette d’un noeud est égale à son nom.
- …
Toutes ces conventions permettent d’avoir des fichiers .dot vraiment simple. Le site officiel propose le fichier suivant comme traditionnel Hello world :
digraph G {
Hello->World
}
Mettons qu’on enregistre le contenu précédent dans un fichier hello.dot. Voici le rendu de ce fichier :
Ligne de commande
Le programme en ligne de commande dot propose de très nombreuses options. Après s’être placé dans le dossier contenant le fichier hello.dot (à l’aide de la commande cd), l’utilisation basique pour générer un fichier est :
dot -T
-o
# ou
dot -T
>
ainsi on généra un fichier PDF :
dot hello.dot -Tpdf -o hello.pdf
ou un fichier PNG :
dot hello.dot -Tpng -o hello.png
De très nombreux formats sont supportés, et on pourra utiliser l’option -Tgif, -Tsvg et ainsi de suite…
Editer les fichiers texte
N’importe quel éditeur de texte peut faire l’affaire (y compris le terminal lui-même).
Néanmoins, il est plus agréable d’en choisir un qui supporte la coloration syntaxique et propose différentes options…
Il existe un Bundle (textmate_graphviz_bundle) pour mon éditeur de prédilection TextMate.
Logiciels de visualisation
Graphviz pour Mac OS X
Cette application permet de visualiser les graphes dans un logiciel muni d’une interface graphique. On retrouve le Look and Feel Apple.
Ainsi si l’application est choisie pour ouvrir par défaut les fichiers .dot, ceux-ci deviennent double cliquable…
En savoir plus sur le site officiel de Graphviz pour Mac OS X réalisée par Pixelglow Software
KGraphViewer pour linux
Il me fallait un équivalent de l’application précédente pour Ubuntu… Je me suis tourné vers KGraphViewer qui s’installe très facilement (par le gestionnaire d’application).
En savoir plus : fiche de l’application sur gna.org ou sur kde-apps.org
Options avancées
Choisir sont moteur de rendu
La définition d’un graphe (sans aucune information de mise en forme) laisse beaucoup de souplesse au moteur de rendu. Plusieurs moteurs ont ainsi été développés, chaque moteur privilégiant certaines caractéristiques (position des noeuds, minimum de croisement d’arc…)
Dans les logiciels évoqués ci-dessus, ces moteurs de rendu correspondent à autant d’options d’agencement. En ligne de commande, les différents moteurs disposent d’options similaires.
dot – Représentation hiérarchique :
C’est l’outil en ligne de commande le plus connu… il est bien adapté aux graphes orientés (il hiérarchise des noeuds).
neato – minimisation de l’énergie.
twopi – représentation radiale.
circo – représentation circulaire.
fdp – représentation alternative pour les graphes non orientés.
Autres services
On trouve l’utilisation de la syntaxe DOT partout :
Intégrer un fichier dans un document LaTex
Le script Python dot2tex permet d’intégrer des graphes dot dans des documents LaTex utilisant les packages LaTex PGF and TikZ. (voir également la section TikZ and PGF sur TeXample.net pour des exemples sur ces packages).
Extensions et plug-ins
Pour intégrer des graphes en syntaxe dot sur différentes plates-formes de publication :
- Extension Graphviz pour Mediawiki.
- EHT Graphviz plugin wordpress.
Robot Graphy dans google wave
Le robot Graphy permet de d’inclure des graphes dans Google wave.
Pour s’en servir, il suffit d’inviter le robot (graph-wave@appspot.com) dans la conversation, et de débuter un blips par #!dot.
Voir aussi
Documentation officielle (en)
graphviz [dot and/or neato] liste et description des différents programmes en lignes de commande disponible.
An Introduction to GraphViz and dot
Voir aussi
Les mots-clés de cet article : graphviz
Cet article est dans la catégorie : Notes