Parmi les cadres de dessin de graphes Java open source, lequel utiliser pour un diagramme de réseau répondant aux exigences suivantes ? Le graphe comptera moins de 1000 nœuds.
1) a des bords parallèles
2) les arêtes dirigées et non dirigées dans un même graphe
3) les nœuds représentés par des images
4) interaction de l'utilisateur avec les nœuds et les arêtes
5) ajouter/supprimer dynamiquement des nœuds et des arêtes
6) étiquetage multiple sur les nœuds et les arêtes, différents niveaux d'étiquetage peuvent être activés ou désactivés par les utilisateurs. (comme le dessin en couches et l'activation ou la désactivation d'une couche).
7) différents algorithmes de mise en page pour afficher les topologies en étoile, en anneau ou en maillage.
J'ai évalué JUNG et Prefuse. Voici ce que j'ai trouvé pour chacune de mes exigences.
1) Prefuse ne peut pas afficher les bords parallèles alors que JUNG le supporte. Le code de Prefuse peut-il être manipulé pour afficher des bords parallèles ? Comme cela implique des changements de base au niveau des données, je pense que ce serait plus difficile que les habituels changements de rendu personnalisés.
2) Je n'ai pas trouvé de référence à un graphe combiné (bords dirigés et non dirigés) dans prefuse et JUNG. Quelqu'un sait-il le contraire ?
3) Cela semble facile avec Prefuse et JUNG.
4) Encore une fois, prefuse et JUNG offrent tous deux un support pour l'interaction avec l'utilisateur.
5) La préfuse et la JUNG la soutiennent toutes deux. Quelles sont les performances de chaque framework lors du redécoupage du graphique ? J'ai vu dans un autre post que prefuse ne fonctionne pas bien pour les mises à jour dynamiques ( Boîte à outils Prefuse : ajout dynamique de nœuds et d'arêtes )
6) Cela revient à modifier le graphique et à le redessiner. La question est donc la même que pour 5)
7) JUNG et prefuse ont tous deux des algorithmes de disposition multiples. Mais lorsque j'ai essayé d'afficher le même ensemble de données en utilisant FruchtermanReingoldLayout dans JUNG et Prefuse, j'ai obtenu des affichages différents. Quelle en est la raison ? D'une manière ou d'une autre, les algorithmes de mise en page dans Prefuse semblent afficher une meilleure mise en page que dans JUNG (le rendu est également meilleur, je pense) bien que la plupart des algorithmes de mise en page dans Prefuse soient basés sur l'implémentation de JUNG. Les mises en page de Prefuse telles que ForceDirectedLayout/FruchtermanReingoldLayout et CircleLayout correspondent directement aux topologies en étoile, en cercle et en mailles.
En dehors de ces exigences, prefuse a un bon support pour les expressions et le langage de requête mais il semble qu'il ne soit pas activement développé contrairement à JUNG. Lequel a une meilleure visualisation ? Avez-vous des suggestions sur celui qui conviendrait le mieux et sur la façon de surmonter ses inconvénients ?
Existe-t-il d'autres cadres que je pourrais utiliser ?