<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Docs Jmini &#187; graphviz</title>
	<atom:link href="http://docs.jmini.fr/mot-cle/graphviz/feed" rel="self" type="application/rss+xml" />
	<link>http://docs.jmini.fr</link>
	<description>docs.jmini.fr</description>
	<lastBuildDate>Thu, 18 Feb 2010 09:47:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Génération de graphe (Graphviz, dot, &#8230;)</title>
		<link>http://docs.jmini.fr/notes/graphe-graphviz-dot</link>
		<comments>http://docs.jmini.fr/notes/graphe-graphviz-dot#comments</comments>
		<pubDate>Wed, 11 Nov 2009 04:59:38 +0000</pubDate>
		<dc:creator>Jérémie Bresson</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[graphviz]]></category>

		<guid isPermaLink="false">http://docs.jmini.fr/?p=104</guid>
		<description><![CDATA[Introduction
Un moyen très simple de représenter un graphe est d&#8217;utiliser les outils open sources Graphviz développés par AT&#38;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 [...]]]></description>
			<content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Un moyen très simple de représenter un graphe est d&#8217;utiliser les outils open sources Graphviz développés par AT&amp;T. Le projet Graphviz regroupe un certain nombre de choses simultanément (ce qui ne le rend pas facile à appréhender au premier abord).</p>
<ul>
<li>le langage de description ou format DOT, qui permet de décrire des graphes dans un format texte.</li>
<li>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&#8217;on veut obtenir, voir plus bas ‘options avancées’).</li>
<li>des librairies qui peuvent être incluses dans d&#8217;autres applications.</li>
<li>des applications qui exploitent les librairies, ou le format de fichier DOT.</li>
</ul>
<h2 id="premiersexemples">Premiers exemples</h2>
<h3 id="fichier.dothelloword">Fichier .dot Hello Word</h3>
<p>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 :</p>
<ul>
<li>créer un arc entre deux noeuds, va aussi créer les deux noeuds.</li>
<li>par défaut, l&#8217;étiquette d&#8217;un noeud est égale à son nom.</li>
<li>&#8230;</li>
</ul>
<p>Toutes ces conventions permettent d&#8217;avoir des fichiers <strong>.dot</strong> vraiment simple. Le site officiel propose le fichier suivant comme traditionnel <em>Hello world</em> :</p>
<div class="markCit"><blockquote>digraph G {<br />
    Hello->World<br />
}</blockquote></div>
<p>Mettons qu&#8217;on enregistre le contenu précédent dans un fichier <strong>hello.dot</strong>. Voici le rendu de ce fichier :</p>
<div id="attachment_105" class="wp-caption alignnone" style="width: 111px"><a href="http://docs.jmini.fr/notes/graphe-graphviz-dot/attachment/dot-hello" rel="attachment wp-att-105"><img src="http://docs.jmini.fr/wp-content/uploads/2009/11/dot-hello.png" alt="Hello -&gt; World" width="101" height="155" class="size-full wp-image-105" /></a><p class="wp-caption-text">Graphe Hello World</p></div>
<h3 id="lignedecommande">Ligne de commande</h3>
<p>Le programme en ligne de commande <strong>dot</strong> propose de très <a href="http://www.graphviz.org/doc/info/command.html" title="Command-line Usage">nombreuses options</a>. Après s&#8217;être placé dans le dossier contenant le fichier hello.dot (à l&#8217;aide de la commande <strong>cd</strong>), l&#8217;utilisation basique pour générer un fichier est :</p>
<div class="markCode"><div class="boxCode"><code>dot <strong><nom du fichier></strong> -T<br />
<format> -o <nom du fichier de sortie><br />
# ou<br />
dot <strong><nom du fichier></strong> -T<br />
<format> > <nom du fichier de sortie></code></div></div>
<p>ainsi on généra un fichier PDF :</p>
<div class="markCode"><div class="boxCode"><code>dot hello.dot -Tpdf -o hello.pdf</code></div></div>
<p>ou un fichier PNG :</p>
<div class="markCode"><div class="boxCode"><code>dot hello.dot -Tpng -o hello.png</code></div></div>
<p>De très nombreux <a href="http://www.graphviz.org/doc/info/output.html" title="Output Formats">formats sont supportés</a>, et on pourra utiliser l&#8217;option -Tgif, -Tsvg et ainsi de suite&#8230;</p>
<h3 id="editerlesfichiertexte">Editer les fichiers texte</h3>
<p>N&#8217;importe quel éditeur de texte peut faire l&#8217;affaire (y compris le terminal lui-même).</p>
<p>Néanmoins, il est plus agréable d&#8217;en choisir un qui supporte la coloration syntaxique et propose différentes options&#8230;</p>
<p>Il existe un Bundle (<a href="http://radr.ca/posts/textmate_graphviz_bundle.html" title="Textmate Graphviz Bundle / Guillaume Carbonneau">textmate_graphviz_bundle</a>) pour mon éditeur de prédilection TextMate.</p>
<h2 id="logicielsdevisualisation">Logiciels de visualisation</h2>
<h3 id="graphvizpourmacosx">Graphviz pour Mac OS X</h3>
<p>Cette application permet de visualiser les graphes dans un logiciel muni d&#8217;une interface graphique. On retrouve le Look and Feel Apple.</p>
<p>Ainsi si l&#8217;application est choisie pour ouvrir par défaut les fichiers .dot, ceux-ci deviennent double cliquable&#8230;</p>
<div id="attachment_106" class="wp-caption alignnone" style="width: 302px"><a href="http://docs.jmini.fr/notes/graphe-graphviz-dot/attachment/dot_graphviz" rel="attachment wp-att-106"><img src="http://docs.jmini.fr/wp-content/uploads/2009/11/dot_graphviz-292x300.png" alt="graphe cluster graphviz" title="" width="292" height="300" class="size-medium wp-image-106" /></a><p class="wp-caption-text">graphe cluster graphviz</p></div>
<p>En savoir plus sur <a href="http://www.pixelglow.com/graphviz/" title="pixelglow | graphviz">le site officiel de Graphviz pour Mac OS X</a> réalisée par Pixelglow Software</p>
<h3 id="kgraphviewerpourlinux">KGraphViewer pour linux</h3>
<p>Il me fallait un équivalent de l&#8217;application précédente pour Ubuntu&#8230; Je me suis tourné vers KGraphViewer qui s&#8217;installe très facilement (par le gestionnaire d&#8217;application).</p>
<div id="attachment_107" class="wp-caption alignnone" style="width: 310px"><a href="http://docs.jmini.fr/notes/graphe-graphviz-dot/attachment/dot_kgraphviewer" rel="attachment wp-att-107"><img src="http://docs.jmini.fr/wp-content/uploads/2009/11/dot_KGraphViewer-300x208.png" alt="graphe cluster dans KGraphViewer" title="cluster.dot dans KGraphViewer" width="300" height="208" class="size-medium wp-image-107" /></a><p class="wp-caption-text">graphe cluster dans KGraphViewer</p></div>
<p>En savoir plus : fiche de l&#8217;application sur <a href="http://gna.org/projects/kgraphviewer" title="KGraphViewer - Summary [Gna!]">gna.org</a> ou sur <a href="http://www.kde-apps.org/content/show.php?content=23999" title="KGraphViewer and KGraphEditor KDE-Apps.org">kde-apps.org</a></p>
<h2 id="optionsavances">Options avancées</h2>
<h3 id="choisirsontmoteurderendu">Choisir sont moteur de rendu</h3>
<p>La définition d&#8217;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&#8217;arc&#8230;)</p>
<p>Dans les logiciels évoqués ci-dessus, ces moteurs de rendu correspondent à autant d&#8217;options d&#8217;agencement. En ligne de commande, les différents moteurs disposent d&#8217;options similaires.</p>
<p><strong>dot</strong> &#8211; Représentation hiérarchique :</p>
<p>C&#8217;est l&#8217;outil en ligne de commande le plus connu&#8230; il est bien adapté aux graphes orientés (il hiérarchise des noeuds).</p>
<p><strong>neato</strong> &#8211; minimisation de l&#8217;énergie.</p>
<p><strong>twopi</strong> &#8211; représentation radiale.</p>
<p><strong>circo</strong> &#8211; représentation circulaire.</p>
<p><strong>fdp</strong>  &#8211; représentation alternative pour les graphes non orientés.</p>
<h2 id="autresservices">Autres services</h2>
<p>On trouve l&#8217;utilisation de la syntaxe DOT partout :</p>
<h3 id="intgrerunfichierdansundocumentlatex">Intégrer un fichier dans un document LaTex</h3>
<p>Le script Python <a href="http://www.fauskes.net/code/dot2tex/" title="dot2tex - A Graphviz to LaTeX converter| fauskes.net">dot2tex</a> permet d&#8217;intégrer des graphes dot dans des documents LaTex utilisant les packages LaTex <a href="http://sourceforge.net/projects/pgf/" title="PGF and TikZ -- Graphic systems for TeX | Get PGF and TikZ -- Graphic systems for TeX at SourceForge.net">PGF and TikZ</a>. (voir également la section <a href="http://www.texample.net/tikz/" title="TikZ and PGF | TeXample.net">TikZ and PGF</a> sur TeXample.net pour des exemples sur ces packages).</p>
<h3 id="extensionsetplugins">Extensions et plug-ins</h3>
<p>Pour intégrer des graphes en syntaxe dot sur différentes plates-formes de publication :</p>
<ul>
<li><a href="http://www.mediawiki.org/wiki/Extension:GraphViz" title="Extension:GraphViz - MediaWiki">Extension Graphviz</a> pour Mediawiki.</li>
<li><a href="http://wordpress.org/extend/plugins/eht-graphviz/" title="WordPress &#8250; EHT Graphviz &laquo; WordPress Plugins">EHT Graphviz</a> plugin wordpress.</li>
</ul>
<h3 id="robotgraphydansgooglewave">Robot Graphy dans google wave</h3>
<p>Le <a href="http://wave-samples-gallery.appspot.com/about_app?app_id=23016" title="Google Wave Sample Details - Graphy - Google Code">robot Graphy</a> permet de d&#8217;inclure des graphes dans Google wave.</p>
<p>Pour s&#8217;en servir, il suffit d&#8217;inviter le robot (<strong>graph-wave@appspot.com</strong>) dans la conversation, et de débuter un blips par <strong>#!dot</strong>.</p>
<div id="attachment_108" class="wp-caption alignnone" style="width: 222px"><a href="http://docs.jmini.fr/notes/graphe-graphviz-dot/attachment/dot_wave" rel="attachment wp-att-108"><img src="http://docs.jmini.fr/wp-content/uploads/2009/11/dot_wave-212x300.png" alt="Google Wave - Graphy" title="Représentation d&#039;un graphe dans google wave" width="212" height="300" class="size-medium wp-image-108" /></a><p class="wp-caption-text">Google Wave - Graphy</p></div>
<h2 id="voiraussi">Voir aussi</h2>
<p><a href="http://www.graphviz.org/Documentation.php">Documentation officielle</a> (en)<br />
<a href="http://www.adp-gmbh.ch/misc/tools/graphviz/index.html">graphviz [dot and/or neato]</a> liste et description des différents programmes en lignes de commande disponible.<br />
<a href="http://linuxdevcenter.com/pub/a/linux/2004/05/06/graphviz_dot.html">An Introduction to GraphViz and dot</a></p>
]]></content:encoded>
			<wfw:commentRss>http://docs.jmini.fr/notes/graphe-graphviz-dot/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
