Mon équipe doit construire un générateur de circonscription en JavaScript, à l'aide de la toile HTML5 ou de la bibliothèque D3 (ou autre chose plus approprié, suggestions, bienvenue). L'organigramme sera généré à partir d'un graphique dirigé défini dans un document JSON. Ma question est la suivante: quel algorithme standard pourrions-nous utiliser pour faciliter l'emplacement automatisé de formes dans l'organigramme (nœuds du graphique) afin de minimiser le nombre de connexions qui se chevauchent et de leurs longueurs? P>
4 Réponses :
JavaScript InfoVis Toolkit (JIT) pourrait avoir des outils qui conviennent à vos besoins: p>
L'algorithme standard que vous recherchez est un graphique dirigé par la force: http: // en.wikipedia.org/wiki/force-based_algorithms_(Graph_Drawing) Si vous voulez une bibliothèque de FD JS agnostique légère, de navigateur et efficace, jetez un coup d'œil à arbor.js: https: // github. com / samizdatco / arbor p>
IMHO D3 est la bibliothèque la plus puissante que vous trouverez (il in intègre l'algorithme basé sur la force), mais elle n'est pas compatible avec IE <9 et un niveau inférieur (orienté documentaire) que sur les bibliothèques (moins à apprendre, plus à penser ). p>
JIT est également une bonne bibliothèque (il in intègre également l'algorithme basé sur la force), non compatible avec IE <9. Cela ressemble plus à HighcharTs pour Infovis. Plus à apprendre (aides, options, paramètres), moins à penser. P>
WORLIT (YUI3) et JSPLUMP (JQuery) sont de bonnes bibliothèques de plomberie mais n'incluent pas les algorithmes FD. P>
Anh-Tuan, remercie une tonne pour le lien vers Arbor. C'est exactement ce dont nous avons besoin!
Vous êtes accueillis :) En ce qui concerne votre moteur de flux de travail pour Stoic.js, vous devriez jeter un oeil à la rafrale (sur github: github.com/defunkt/resque , développé et maintenu par l'équipe GitHub); Il existe des versions compatibles Node.js et Ruby, Redis et Mongodb (The Mongodb One a été créée par notre CTO) Plugins intéressants (Réessayer, Emploi Batch, Timeout Lock-Outout) et interface Web pour gérer les travaux en attente et les erreurs (resque-web ). À CLEVERSCALE, nous construisons actuellement un moteur de Workflow Amazon SWF au-dessus de la resque.
L'algorithme dirigé par la force n'est pas exactement optimal pour ce type de problèmes. Je préfère suggérer d'utiliser un dessin de graphique en couches ( http://fr.wikipedia.org/wiki/layered_graph_drawing ) algorithme. Dagre ( https://github.com/cpettitt/dagre ). Vous pouvez également jeter un coup d'œil à mon article de blog sur la mise en page automatique et le rendu des graphiques dirigés: http://www.daviddurman.com/automatic-graph-layout-with-joindjs-and-dagre.html . P>
Cette est la bibliothèque que j'ai trouvée utile. C'est appelé gojs. J'espère que cela aide. P>