Détails
Bibliothèque de visualisation de graphiques en JavaScript
J'ai une structure de données qui représente un graphe dirigé, et je veux en faire un rendu dynamique sur une page HTML. Ces graphes ne comportent généralement que quelques nœuds, peut-être dix au maximum, et je pense donc que les performances ne seront pas un problème majeur. Idéalement, j'aimerais pouvoir l’associer à jQuery pour que les utilisateurs puissent modifier la disposition manuellement en faisant glisser les nœuds.
Remarque : je ne cherche pas une bibliothèque de graphiques.
525
3
Je viens de créer ce que vous recherchez peut-être : http://www.graphdracula.net. C'est du JavaScript avec une mise en page en graphe dirigé, du SVG et vous pouvez même faire glisser les nœuds. Il faut encore le peaufiner, mais il est tout à fait utilisable. Vous créez facilement les nœuds et les bords avec du code JavaScript comme celui-ci :
J'ai utilisé la bibliothèque Raphael JS mentionnée précédemment (l'exemple de graffle) ainsi que du code pour un algorithme de disposition de graphe basé sur la force que j'ai trouvé sur le net (tout est open source, licence MIT). Si vous avez des remarques ou besoin d'une certaine fonctionnalité, je peux l'implémenter, il suffit de demander !
Vous voudrez peut-être jeter un coup d'oeil à d'autres projets, aussi ! Vous trouverez ci-dessous deux méta-comparaisons :
Bibliothèques purement JavaScript
Bibliothèques commerciales
Bibliothèques abandonnées
Bibliothèques non-Javascript
JsVIS était plutôt sympa, mais lent avec des graphes plus grands, et a été abandonné depuis 2007.
prefuse est un ensemble d'outils logiciels permettant de créer de riches visualisations interactives de données en Java. flare est une bibliothèque ActionScript permettant de créer des visualisations qui s'exécutent dans Adobe Flash Player, abandonnée depuis 2012.
Comme l'a mentionné guruz, le [JIT][1] propose plusieurs belles mises en page de graphes/arbres, notamment des visualisations RGraph et HyperTree très attrayantes.
De plus, je viens de mettre en place une implémentation super simple basée sur SVG sur github (pas de dépendances, ~125 LOC) qui devrait fonctionner suffisamment bien pour les petits graphiques affichés dans les navigateurs modernes.
[1] : http://philogb.github.io/jit/