web-dev-qa-db-fra.com

Dessiner une bordure autour d'un ensemble de sommets dans Graphviz

J'essaie de dessiner un graphique avec Graphviz.

Je souhaite dessiner une ligne pointillée autour d'un ensemble de sommets, symbolisant qu'ils font partie d'une entité plus grande.

Supposons, par exemple, que si j'ai trois sommets: œufs, poulet et jambon, je devrais pouvoir tracer une ligne pointillée autour des trois et étiqueter cette bordure comme aliment.

51
user916315

Il est possible de regrouper des nœuds dans graphviz en les mettant dans un cluster. Un cluster est un type particulier de sous-graphique que certains moteurs de mise en page (point, fdp, ...) prennent en charge, et s'il est pris en charge, les nœuds d'un cluster seront dessinés ensemble.

De la documentation:

Si le nom du sous-graphique commence par cluster, Graphviz note le sous-graphique comme un sous-graphique de cluster spécial. S'il est pris en charge, le moteur de mise en page fera la mise en page de sorte que les nœuds appartenant au cluster soient dessinés ensemble, avec le dessin entier du cluster contenu dans un rectangle englobant.

Notez que, pour le meilleur et pour le pire, les sous-graphiques de cluster sont pas une partie du langage DOT, mais uniquement une convention syntaxique respectée par certains des moteurs de disposition.


Important: L'ID du sous-graphique doit commencer par cluster.


Exemple:

graph g{
 subgraph cluster_food {
    eggs; chicken; ham;
    label="Food";
    graph[style=dotted];
 }
}

ham, chicken and eggs

76
marapet