Tiroir graphique JavaScript / jQuery pur
Tiroir graphique JavaScript / jQuery pur
Je recherche une simple bibliothèque JavaScript pure qui n’utilise pas de toile de HTML5 et fournit des graphiques de dessin.
Quelque chose de similaire à Sigma et Cytoscape Web serait parfait.
http://sigmajs.org/ (celui-ci couvre tous mes besoins sauf le JavaScript pur) http://cytoscapeweb.cytoscape.org/
La bibliothèque est censée avoir de telles fonctionnalités:
- dessiner des nœuds et des arêtes entre eux (dirigés ou non)
- changement de position de chaque nœud par glisser-déposer (pas obligatoire mais avec possibilité d’ajouter un écouteur d’événements à chaque nœud)
- d’autres fonctionnalités telles que la mise en évidence des bords et la mise à l’échelle seraient également de grands avantages
does not use canvas from HTML5
? Et pourquoi sigma n’est pas une pure Javascript
bibliothèque pure Javascript
? Réponses
Farid Nouri Neshat
Très probablement d3.js , c’est ce que vous voulez. Il utilise HTML5 / CSS / SVG pour dessiner. Vous souhaiterez probablement utiliser la mise en page forcée . Il prend en charge le glisser-déposer et vous pouvez simplement styler votre graphique avec CSS.
MK
Comme mentionné , d3.js devrait fonctionner correctement. Il doit utiliser des SVG pour le dessin, donc le dessin des nœuds fonctionne, tout comme le style avec CSS (voir l’exemple). Voici un exemple de http://bl.ocks.org/jose187/4733747 :
<!DOCTYPE html> <meta charset="utf-8"> <script src="http://d3js.org/d3.v2.min.js?2.9.3"></script> <style> .link { stroke: #aaa; } .node text { stroke:#333; cursos:pointer; } .node circle{ stroke:#fff; stroke-width:3px; fill:#555; } </style> <body> <script> var width = 960, height = 500 var svg = d3.select("body").append("svg") .attr("width", width) .attr("height", height); var force = d3.layout.force() .gravity(.05) .distance(100) .charge(-100) .size([width, height]); d3.json("graphFile.json", function(json) { force .nodes(json.nodes) .links(json.links) .start(); var link = svg.selectAll(".link") .data(json.links) .enter().append("line") .attr("class", "link") .style("stroke-width", function(d) { return Math.sqrt(d.weight); }); var node = svg.selectAll(".node") .data(json.nodes) .enter().append("g") .attr("class", "node") .call(force.drag); node.append("circle") .attr("r","5"); node.append("text") .attr("dx", 12) .attr("dy", ".35em") .text(function(d) { return d.name }); force.on("tick", function() { link.attr("x1", function(d) { return d.source.x; }) .attr("y1", function(d) { return d.source.y; }) .attr("x2", function(d) { return d.target.x; }) .attr("y2", function(d) { return d.target.y; }); node.attr("transform", function(d) { return "translate(" + dx + "," + dy + ")"; }); }); }); </script>
{ "nodes":[ {"name":"node1","group":1}, {"name":"node2","group":2}, {"name":"node3","group":2}, {"name":"node4","group":3} ], "links":[ {"source":2,"target":1,"weight":1}, {"source":0,"target":2,"weight":3} ] }
/, graphique, JavaScript, jQuery, pur, Tiroir