Graphviz-10.0.1

Introduction à Graphviz

Le paquet Graphviz contient le logiciel de visualisation de graphes. La visualisation de Graphes est une manière de représenter des informations structurelles dans des diagrammes de graphes abstraits et de réseaux. Graphviz a plusieurs programmes principaux de présentation de graphes. Il contient aussi des interfaces graphiques interactives et Web, des outils, des bibliothèques et des bindings dans certains langages.

This package is known to build and work properly using an LFS 12.1 platform.

Informations sur le paquet

Dépendances de Graphviz

[Note]

Note

Pour l'utilisation basique de Graphviz vous n'avez besoin d'aucune bibliothèque en dehors de ce qui se trouve dans le livre LFS. Son moteur de rendu de « cœur » permet de générer différent formats graphiques comme Postscript, SVG, VML, .fig, et Tk. Ces formats peuvent être convertis en presque n'importe quoi d'autre à l'aide d'outils comme ImageMagick-7.1.1-28. Les dépendances ci-dessous ajoutent la possibilité de générer des images de graphes au format bitmap, d'afficher le graphe à l'écran, de modifier un graphe en visionnant directement l'image finale ou de visionner de très grands graphes. Comme Graphviz est une dépendance de plusieurs autres paquets dans ce livre, nous vous conseillons de le construire d'abord sans la plupart de ces dépendances puis de le reconstruire lorsque vous aurez assez de paquets pour vos besoins.

Facultatives, pour diverses sorties bitmap

Pango-1.51.2 avec Cairo-1.18.0, Bibliothèques Xorg, Fontconfig-2.15.0 et libpng-1.6.42, pour générer des images aux formats bitmap SVG, postscript, PNG et PDF, ou pour afficher l'image à l'écran. La sortie PNG est requise pour construire gegl-0.4.48

Ajouter GTK+-2.24.33 avec libjpeg-turbo-3.0.1 permet d'ajouter la prise en charge des formats JPEG, BMP, TIF et ICO et d'afficher l'image dans une fenêtre GTK+

On peut utiliser la bibliothèque GD à la place de Pango. Elle ajoute la possibilité de générer des images aux formats GIF, VRML et GD, mais Pango fournie une meilleure sortie pour les autres formats et est requis pour afficher les images

On peut ajouter d'autres formats avec libwebp-1.3.2 (la prise en charge de WebP est considérée comme étant expérimentale), DevIL, libLASi et glitz

Facultatives, pour charger des images graphique qui peuvent être affichées à l'intérieur des nœuds du graphe

libgs.so de ghostscript-10.02.1, librsvg-2.57.1 et Poppler-24.02.0

Facultatives, pour construire plus d'outils

Freeglut-3.4.0 (avec GtkGLExt et libGTS pour construire le visualiseur de très grands graphes smyrna, considéré comme expérimental), (Qt-5.15.12 or qt-alternate-5.15.12) pour construire l'éditeur de graphes gvedit.

Facultatives (Pour construire les liaisons de certains langages)

SWIG-4.2.0 (SWIG doit être installé, ou aucune liaison ne sera construite), GCC-13.2.0 (pour le compilateur go), Guile-3.0.9, OpenJDK-21.0.2, Lua-5.4.6, PHP-8.3.3, Ruby-3.3.0, Tk-8.6.13, Io, Mono, OCaml et R

Facultatives (outils de construction)

Criterion (boîte à outils pour les tests) et Electric Fence,

Facultatives (pour construire la documentation pdf)

ghostscript-10.02.1 (pour la commande ps2pdf)

Installation de Graphviz

Installez Graphviz en exécutant les commandes suivantes :

sed -i '/LIBPOSTFIX="64"/s/64//' configure.ac &&

./autogen.sh              &&
./configure --prefix=/usr \
            --docdir=/usr/share/doc/graphviz-10.0.1
[Note]

Note

Un avertissement est généré par autogen.sh parce que l'arborescence de construction n'est pas un dépôt git. En conséquence, la date est mise à 0. Pour avoir une date qui a du sens dans la chaine de version, vous pouvez lancer :

sed -i "s/0/$(date +%Y%m%d)/" builddate.h

Que vous fixiez une date ou non, continuez la compilation du paquet :

make

Ce paquet n'a pas de suite de test fournissant des résultats significatifs.

Maintenant, en tant qu'utilisateur root :

make install

Explication des commandes

sed ... configure.ac : Cette commande est requise pour éviter d'installer des fichiers dans /usr/lib64.

--with-javaincludedir="$JAVA_HOME/include -I$JAVA_HOME/include/linux" : Si vous avez construit OpenJDK-21.0.2 dans /opt, et que vous souhaitez construire les liaisons JAVA, vous devez spécifier l'emplacement des fichiers d'en-tête JAVA pour configurer ce paquet. L'option de configure n'est destinée à recevoir qu'un répertoire, mais deux répertoires doivent être inclus. C'est tout de même possible en utilisant l'option -l dans la variable.

--with-webp : Même si libwebp-1.3.2 est installé, il n'est pas inclus dans la construction sans cette option.

--with-smyrna : Même si les dépendances requises sont installées, le visualiseur de graphe interactif smyrna n'est pas construit sans cette option.

Configuration de Graphviz

Fichiers de configuration

/usr/lib/graphviz/config

Informations sur la configuration

Il n'y a besoin d'aucune configuration particulière pour Graphviz. Vous pourriez envisager d'installer des greffons et des outils supplémentaires disponibles sur la page de téléchargements (https://graphviz.org/download/source/) pour des fonctionnalités supplémentaires. Si vous installez des greffons supplémentaires, vous pouvez lancer dot -c (en tant qu'utilisateur root) pour mettre à jour le fichier config dans /usr/lib/graphviz.

Contenu

Programmes installés: acyclic, bcomps, ccomps, circo, cluster, dijkstra, dot, dot2gxl, dot_builtins, edgepaint, fdp, gc, gml2gv, graphml2gv, gv2gml, gv2gxl, gvcolor, gvedit, gvgen, gvmap, gvmap.sh, gvpack, gvpr, gxl2dot, gxl2gv, mm2gv, neato, nop, osage, patchwork, prune, sccmap, sfdp, tred, twopi, unflatten et vimdot
Bibliothèques installées: libcdt.so, libcgraph.so, libgvc.so, libgvpr.so, liblab_gamut.so, libpathplan.so, libxdot.so et plusieurs greffons dans /usr/lib/graphviz. Il y en a aussi plusieurs dans les sous-répertoires de /usr/lib/{lua,perl5,php,python3.12,tcl8.6}. Malheureusement certaines bibliothèques sont dupliquées.
Répertoires installés: /usr/include/graphviz, /usr/lib/graphviz, /usr/lib/tcl8.6/graphviz, /usr/share/doc/graphviz-10.0.1 et /usr/share/graphviz

Descriptions courtes

acyclic

est un filtre qui prend un graphe orienté en entrée et sort une copie du graphe avec le minimum d’arêtes inversées pour en faire un graphe acyclique

bcomps

décompose des graphes dans leurs composants biconnexes, en affichant les composants sur la sortie standard

ccomps

décompose des graphes dans leurs composants connexes, en affichant les composants sur la sortie standard

circo

dessine des graphes en utilisant une présentation circulaire

cluster

prend en entrée un graphique au format DOT, trouve les groupes de nœuds et ajoute ces informations au graphe

diffimg

(nécessite la bibliothèque GD) génère une image où chaque pixel est la différence entre les pixels correspondants dans chacune des 2 images sources

dijkstra

lit un flux de graphes et calcule pour chacun d'eux la distance entre chaque nœud et l'origine

dot

dessine des graphes orientés. Il fonctionne bien sur des graphes acycliques orientés et autres qui peuvent être dessinés sous une forme hiérarchisée. Il lit les fichiers de graphes avec des attributs et il écrit les dessins. Par défaut, le format de sortie de dot est le fichier d'entrée assorti des coordonnées pour la mise en page

dot2gxl

fait des conversions de graphes représentés en GXL et dans le langage DOT. Sauf si vous spécifier un type de conversion en utilisant un drapeau, gxl2dot déduira le type de conversion à partir de l'extension du fichier d'entrée, une extension.dot donnant une conversion de DOT en GXL, et une extension .gxl donnant une conversion de GXL en DOT

edgepaint

effectue la coloration des arêtes pour distinguer les arêtes qui se croisent

fdp

dessine des graphes non droits en utilisant un modèle « spring ». Il utilise un algorithme basé sur les forces, dans l'esprit de Fruchterman et de Reingold

gc

est un graphe analogue à wc dans le sens où il affiche sur la sortie standard le nombre de nœuds, de bords, de composants connexes ou de clusters contenus dans les fichiers d'entrée. Il affiche aussi un résultat total de tous les graphes si vous donnez plus d'un graphe

gml2gv

convertit le graphe spécifiés dans le format GML vers un graphe dans le format GV (anciennement DOT)

graphml2gv

convertit le graphe spécifié dans le format GRAPHML vers un graphe dans le format GV (anciennement DOT)

gv2gml

convertit un graphe spécifié dans le format GV vers un graphe dans le format GML

gv2gxl

convertit un graphe spécifié dans le format GV vers un graphe dans le format GXL

gvcolor

est un filtre qui règle les couleurs des nœuds à partir valeurs d'une graine initiale. Les couleurs s'étendent le long des bords des pieds à la tête et sont moyennées (en tant que vecteurs HSB) au niveau des nœuds

gvedit

fournit un éditeur et une visionneuse de graphes simple. Il permet de voir beaucoup de graphes en même temps. Le texte de chaque graphe est affiché dans sa propre fenêtre

gvgen

génère différents graphes abstraits simples à structure régulière

gvmap

prend un graphe en entrée dans le format DOT, trouve les clusters de nœuds et produit un rendu du graphe dans le style d'une carte géographique, avec les clusters mis en relief, dans le format xdot

gvmap.sh

est un tunnel pour le lancement de gvmap

gvpack

lit un flux de graphes, combine les graphes dans une seule présentation et produit un graphe unique représentant l'union des graphes de l'entrée

gvpr

est un éditeur de flux de graphes inspiré d'awk. Il copie les graphes en entrée vers sa sortie, en transformant éventuellement leur structure et leurs attributs et en créant de nouveaux graphes, ou en affichant des informations arbitraires

gxl2dot

fait des conversions de graphes représentés en GXL et dans le langage DOT. Sauf si vous spécifier un type de conversion en utilisant un drapeau, gxl2dot déduira le type de conversion à partir de l'extension du fichier d'entrée, une extension.dot donnant une conversion de DOT en GXL, et une extension .gxl donnant une conversion de GXL en DOT

gxl2gv

convertit des graphes représentés en GXL en langage GV ou inversement

mm2gv

convertit une matrice creuse du format Matrix Market en un graphe dans le format GV (anciennement DOT)

neato

dessine un graphe non orienté en utilisant les modèles « spring ». Les fichiers d’entrée doivent être formatés dans le langage de graphe dot. Par défaut, la sortie de neato est le graphe en entrée assorti de coordonnées pour la mise en page

nop

lit un flux de graphes et affiche chacun d'eux sur la sortie standard de manière agréable (canonique). Si aucun fichier n'est donné, il lit l'entrée standard

osage

dessine des graphes groupés. En entrée, il prend n'importe quel graphe au format DOT

patchwork

dessine des graphes groupés en utilisant une disposition d'arborescence en grille. En entrée, il prend n'importe quel graphe au format DOT

prune

lit des graphes orientés dans le même format que celui utilisé par dot et supprime les sous-graphes enracinées dans les nœuds spécifiés sur la ligne de commande avec les options

sccmap

décompose des graphes orientés (digraph) en composants fortement connexes et une carte auxiliaire des relations entre les composants. Sur cette carte, chaque composant est réduit à un nœud. Les graphes qui en résultent sont affichés sur la sortie standard

sfdp

dessine des graphes non orientés en utilisant le modèle « spring », mais il utilise une approche multi-échelle pour produire les calques des grands graphiques en un temps raisonnable

tred

calcule la réduction transitive des graphes orientés et affiche les graphes qui en résultent sur la sortie standard. Ceci supprime les arêtes qu'implique la transitivité. Les nœuds et les sous-graphes ne sont pas affectés autrement

twopi

dessine des graphes en utilisant une présentation en rayons. Essentiellement, un nœud est choisi comme le centre et placé à l'origine. Les nœuds restants sont placés sur une suite de cercles concentriques focalisés autour de l'origine, chacun étant à une distance de rayon fixe du cercle précédent

unflatten

est un préprocesseur de dot utilisé pour améliorer le rapport d'aspect des graphes ayant beaucoup de blancs ou de nœuds déconnectés. La présentation normale d'un tel graphique est en général très large ou haute

vimdot

est un script simple qui lance gvim ou l'éditeur vim ainsi qu'une fenêtre GUI pour voir la sortie de dot du fichier édité

libcdt.so

gère les dictionnaires pendant l'exécution en utilisant les types de données de contenu standards : set/multiset désordonné, set/multiset ordoné, liste, pile, et queue

libcgraph.so

supporte la programmation de graphes en maintenant les graphes en mémoire et en lisant et écrivant les fichiers de graphes. Les graphs sont composés de nœuds, arêtes, et de sous-graphes imbriqués

libgvc.so

fournit un contexte pour les applications souhaitant manipuler et faire du rendu de graphes. Il fournit un analyseur en ligne de commande, du code de rendu commun, et un mécanisme de greffons pour les moteurs de rendu

libpathplan.so

contient des fonctions pour trouver le chemin le plus court entre deux points sur un simple polygone

libxdot.so

fournit la prise en charge de l'analyse et de la désanalyse des opérations spécifiées par le langage xdot