2
votes

La distance des nœuds double à l'intérieur des clusters

Je génère automatiquement des fichiers Graphviz .dot à partir d'un outil de diagrammes pour un langage POO. Certains diagrammes utilisent des clusters pour représenter par exemple fichiers qui contiennent plusieurs définitions d'entité (par exemple, objet). Le problème est qu'à l'intérieur des clusters, la distance des nœuds double, ce qui donne de très grands diagrammes. Un exemple simple:

 entrez la description de l'image ici

Notez que l'arête étiquetée "s'étend" est deux fois plus longue que toutes les autres arêtes.

Le code source de cet exemple simple se trouve sur https://gist.github.com/pmoura/ a3092a95eb5c2cd06e02735230a8b8ec

Un exemple plus complexe qui, je pense, a la même cause fondamentale:

 entrez la description de l'image ici

Existe-t-il une solution pour que la distance entre les nœuds à l'intérieur d'un cluster soit la même que la distance entre un nœud de cluster et un nœud à l'extérieur du cluster? Pour une raison quelconque, dot aligne les étiquettes de bord de cluster avec les nœuds extérieurs, comme vous pouvez le voir dans l'image ci-jointe. Veuillez noter que je recherche une solution qui peut être automatisée, pas un correctif pour un diagramme concret. Les choses que j'ai essayées en vain incluent newrank (qui segmente toujours les défauts) et la contrainte de bord . La seule solution de contournement que j'ai trouvée était de ne pas utiliser de clusters, ce qui m'empêchait d'exporter des fichiers SVG avec des liens URL vers des fichiers et des répertoires dans les dépôts de code source.

Le code source de ce deuxième graphique joint se trouve à l'adresse https://gist.github.com/pmoura / c12a9ce94f9a0b872c60087ac40c2975 (trop gros pour le coller ici).


2 commentaires

Vu votre réputation, pourquoi n'avez-vous pas ajouté le point / code source?


@albert Taille de la source. Mais j'ai ajouté un lien vers l'essentiel avec ma question.


3 Réponses :


1
votes

Après quelques recherches supplémentaires sur les ressources Graphviz, il s'avère que ce problème est causé par un bogue, corrigé dans la version actuelle de git, et non par un problème de paramétrage graphique. Le ticket de bogue est disponible sur:

https://gitlab.com/graphviz/graphviz/issues/1288

Le bogue est présent dans la version stable actuelle (2.40.1) et sur l'instantané de développement actuel (sur le site officiel) graphviz-2.41.20171026.1811.tar.gz .

P.S. Je suis sous macOS et j'installe généralement Graphviz à l'aide de MacPorts. Mais, au moment d'écrire ces lignes, MacPorts graphviz-devel portfile installe le snapshot ci-dessus, qui n'inclut pas le correctif de bogue. J'ai fini par utiliser Homebrew pour compiler et installer facilement la version actuelle de Graphviz git (branche master ) en utilisant la commande brew install --HEAD graphviz .


1 commentaires

Merci pour la recherche, j'ai aussi lutté avec ce bug. Malheureusement, la version graphviz dans Homebrew est très étrange, sur ma machine Mac, elle gâche beaucoup les polices, ce qui semble être dû au fait que cette version manque Paco ou quelque chose du genre. Donc sois prudent. Vous pouvez consulter ma question sur ce problème pour voir des exemples de ce qui ne va pas dans brew graphviz: stackoverflow.com/questions/54743233/...



1
votes

Désolé, il semble que nous n'avons pas actualisé l'instantané officiel du développement depuis 2017! Nous avons un peu de mal avec certains problèmes de site Web depuis que nous sommes passés à un compte gratuit sur gitlab et que nous n'avons pas d'accès au shell, il est donc difficile de faire des choses comme générer du nouveau contenu par programme. Peut-être que quelqu'un peut nous conseiller s'il est possible d'obtenir un compte payant peu coûteux sur gitlab avec un accès shell. Je les ai appelés une fois, mais j'ai fini par parler avec un représentant qui ne savait pas et n'était pas motivé pour aider. C'est frustrant pour tous ceux que je connais.


1 commentaires

Représentant désemparé. Triste. Ce serait un beau geste et un geste marketing pour GitLab de sponsoriser le projet Graphviz en offrant un compte payant à vie.



1
votes

Une autre solution possible serait d'utiliser xlabels ou headlabel \ taillabel avec positionnement manuel au lieu de label . Ce n'est pas très pratique mais laisse les longueurs de bord intactes.


0 commentaires