J'ai suivi les instructions à l' adresse suivante : http://bost.ocks.org/mike/path/ pour créer et animer des graphiques simples avec des lignes simples.
Et, a compris comment créer plusieurs lignes dans un graphique: Dessiner plusieurs lignes dans D3.js
Problème principal: j'ai de la difficulté à passer de plusieurs lignes après que je change et que je lance de nouvelles données dans mon tableau de données.
Je crée les lignes N avec: (time: epoch time, steps forward)
var seriesData = [[{time:1335972631000, value:23}, {time:1335972631500, value:42},...], [{time:1335972631000, value:45}, {time:1335972631500, value:13},...], [{time:1335972631000, value:33}, {time:1335972631500, value:23},...}], [...],[...],... ]; var seriesColors = ['red', 'green', 'blue',...]; line = d3.svg.line() .interpolate(interpolation) .x(function(d) { return x(d.time); }) .y(function(d) { return y(d.value); }); graphGroup.selectAll(".line") .data(seriesData) .enter().append("path") .attr("class", "line") .attr("d", line) .style('stroke', function(d, i) { return seriesColors[i]; }) .style('stroke-width', 1) .style('fill', 'none');
Et j'essaie de mettre à jour N lignes avec un setInterval Javascript (…) appelant une méthode avec:
graph.selectAll("path") .data(seriesData) .attr("transform", "translate(" + x(1) + ")") .attr("d", line) .transition() .ease("linear") .duration(transitionDelay) .attr("transform", "translate(" + x(0) + ")");
Il peut dessiner parfaitement l'ensemble initial, mais dès que je met à jour le tableau de données, les lignes disparaissent.
MISE À JOUR 01
Je me suis rendu compte que j'utilise les valeurs de temps d'époque dans le x (xAxis montre la date: l'heure), car mon exemple fonctionnerait probablement si j'utilisais les séries illustrées ci-dessus.
Le problème était la «transformation», «traduire» en utilisant x (1), x (0) renvoyait des nombres énormes, beaucoup plus grand que mon graphique devait être transitionné.
J'ai modifié la méthode des lignes N de mise à jour (ci-dessus) pour utiliser une approche manuelle:
Nouveau problème: maintenant, le graphique se déplace correctement à gauche, mais les lignes / graphique s'affichent à droite, chaque mise en fonction de la mise à jour de l'interface est exécutée.
Il est poussé / décalé le tableau sérieData correctement, mais il ne continue pas à faire défiler vers la gauche pour afficher les nouvelles données qui sont effectivement dessinées.
graph.selectAll("path") .data(seriesData) .attr("d", line) .attr("transform", null) .transition() .ease("linear") .duration(2000) .attr("transform", "translate(-200)");
Une autre référence que j'ai utilisée est la suivante: http://bl.ocks.org/1148374
Des pensées?
Une chose qui saute sur moi comme une possibilité d'erreur est les appels de données qui sont utilisés, l'initiale est
.data(seriesData)
La mise à jour utilise
.data([seriesData])
Ce qui peut causer des problèmes, mais il est difficile de dire sans voir le reste de ce qui se passe, pouvez-vous le mettre sur jsfiddle?