docs.jmini.fr

Les docs Jmini

Les docs jmini regroupent mes notes personnelles plus ou moins détaillées que je souhaite partager. Compilations de liens, tutoriels, réalisations pense-bêtes, morceaux de codes...
Autant d’informations que je retrouve sur mon site et qui pourront vous être utiles. En savoir plus...



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 :

Hello -> World

Graphe Hello World

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…

graphe cluster graphviz

graphe cluster graphviz

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).

graphe cluster dans KGraphViewer

graphe cluster dans KGraphViewer

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 :

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.

Google Wave - Graphy

Google Wave - Graphy

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 :

Cet article est dans la catégorie : Notes


© 2007-2024 Jérémie Bresson | jmini.fr | Ce site est sous licence Creative Commons - en savoir plus