====== GraphViz ====== * [[python:graphviz|Utilisation avec Python]] S'écrit dans des fichiers ''.dot''. https://www.graphviz.org/ ==== Visualisation ==== * avec ''xdot'' * en convertissant le fichier DOT vers un autre format: ''dot -Tpng out.dot > out.png'' ==== Syntaxe ==== digraph G { label = "Titre"; subgraph cluster_A { # commencer par cluster_ est obligatoire ! pencolor = "transparent" # n'affiche pas de cadre autour du sous-graphe label = "Sub A" # commentaire "a" "a-0-0" [label="A-0-0"]; "a-0-1" [label="A-0-2", style="dashed"]; "a-0-0" -> "a-0-1"; "a-0-1" -> "a-0-0" [style="dashed"]; } } Faire des ''subgraph'' n'est pas obligatoire. Au début, ''digraph'' indique que le graphe est orienté. Ressources: * [[https://cyberzoide.developpez.com/graphviz/]] * [[https://www.tonyballantyne.com/graphs.html]] * [[https://graphs.grevian.org/example]] ==== Forcer l'ordre horizontal des nœuds ==== [[https://stackoverflow.com/questions/16637305/children-order-in-graphviz-tree|Source]] L'astuce est de créer un lien invisible. Pour s'assurer que le nœud ''A'' sera à gauche du nœud ''B'': {rank = same; A -> B [style = invis];} ==== Avoir une disposition en grille des sous-graphes indépendants ==== [[https://stackoverflow.com/questions/8002352/how-to-control-subgraphs-layout-in-dot|Source]] ccomps -x test.dot | dot | gvpack -array2 | neato -Tpng -n2 -o graph.png Il est possible de préciser l'ordre des graphes : digraph G1 { sortv=1; a->{b; c;}; } digraph G2 { sortv=2; d -> {e; f;}; } digraph G3 { sortv=3; g -> h; } digraph G4 { sortv=4; i -> j; } digraph G5 { sortv=5; {k; l;} -> m; }