Je souhaite remplacer la dernière valeur X d'une série de lignes dans un graphique dynamique, par exemple si vous ajoutez différentes valeurs y avec le même X, il trace le graphique plusieurs fois

  linechart.add({ x: 100, y: 20 } )
  linechart.add({ x: 100, y: 30 } )
  linechart.add({ x: 100, y: 32 } )
  linechart.add({ x: 100, y: 25 } )

Mais quand j'exécute quelque chose comme ci-dessus, je veux que le graphique final ne soit compris que de 20 à 25. J'en ai besoin pour un graphique dynamique qui montre les prix en direct toutes les secondes sur la dernière valeur X, mais ne décale l'axe des x qu'après 1 minute.

0
Gracie williams 18 févr. 2021 à 13:45

1 réponse

Meilleure réponse

À partir de maintenant, la seule façon de modifier les données précédemment poussées dans une série de lignes est de tout effacer et de rajouter les données modifiées.

Dans votre cas, puisque ce n'est que le tout dernier point de données qui change fréquemment, vous pouvez séparer le graphique en deux LineSeries. Le premier LineSeries contiendrait tous les points de données qui ont été, comme vous l'avez décrit, décalés sur l'axe X. Le deuxième LineSeries ne contiendrait que deux points à un moment donné, l'un est le dernier point de données "décalé" et l'autre le prix en direct le plus à jour. Chaque fois que le prix en direct change, vous effaceriez et poussez ces deux points vers cette série de lignes secondaire.

linechart.clear().add([ latestShiftedDataPoint, latestLivePriceDataPoint ])

Cela entraînerait des performances optimales et, espérons-le, fonctionnera également comme vous le souhaitez.

Bien sûr, séparer le graphique en deux séries est complètement facultatif, si la quantité totale de points de données n'est pas trop élevée, ou si vous voulez valoriser la simplicité par rapport aux performances, vous pouvez bien sûr accomplir la même chose avec une seule LineSeries, encore une fois en en utilisant une méthode claire chaque fois que le prix en direct change.

1
Dharman 23 févr. 2021 à 11:04