Chartjs实时图表X轴移动

5
我想使用Chartjs显示实时数据并沿着x轴缓慢滚动的图表,我在这里用js fiddle尝试过,但它只是疯狂地上下跳动:https://jsfiddle.net/rsnufpq7/ 该图应该向左移动,旧点消失不带任何动画效果,就像这里的第二个示例:https://bost.ocks.org/mike/path/
var canvas = document.getElementById('myChart');
var data = {
    labels: ["January", "February", "March", "April", "May", "June", "July"],
    datasets: [
        {
            label: "My First dataset",
            fill: false,
            lineTension: 0.0,
            backgroundColor: "rgba(75,192,192,0.4)",
            borderColor: "rgba(75,192,192,1)",
            borderCapStyle: 'butt',
            borderDash: [],
            borderDashOffset: 0.0,
            borderJoinStyle: 'miter',
            pointBorderColor: "rgba(75,192,192,1)",
            pointBackgroundColor: "#fff",
            pointBorderWidth: 1,
            pointHoverRadius: 5,
            pointHoverBackgroundColor: "rgba(75,192,192,1)",
            pointHoverBorderColor: "rgba(220,220,220,1)",
            pointHoverBorderWidth: 2,
            pointRadius: 5,
            pointHitRadius: 10,
            data: [65, 59, 80, 0, 56, 55, 40],
        }
    ]
};

var zero = 7;
function adddata(){

   var value = Math.floor((Math.random() * 10) + 1);;
      myLineChart.data.labels.push(zero);
      myLineChart.data.labels.splice(0, 1);
  myLineChart.data.datasets[0].data.splice(0, 1);
  myLineChart.data.datasets[0].data.push(value); 


  myLineChart.update();
  zero++;
}



   setInterval(function(){
   adddata();
    },1000);

var option = {
    showLines: true
};
var myLineChart = Chart.Line(canvas,{
    data:data,
  options:option
});

我也在尝试做同样的事情。你找到解决方案了吗? - Alex Loper
我找到的最佳解决方案是这个 https://stackoverflow.com/a/51687297/9180619 - l-portet
1个回答

0
你的代码表现如预期,唯一不足之处是你的Y轴没有定义范围并且它被动态调整。
为了达到这个目的,我已经扩展了你的选项,使其看起来像这样。
var option = {
  showLines: true,
  scales: {
    yAxes: [{
      display: true,
      ticks: {
        beginAtZero:true,
        min: 0,
        max: 100  
      }
    }]
  }
};

我已经为y轴定义了最小值和最大值,它不会再跳动了。
这里有一个可用的fiddle

1
这与我所问的无关,是否有可能禁用动画,只是将图表向左滑动? - Max
@Max 这只涉及上下弹跳部分。关于动画,我只找到了如何禁用它们而不是如何让它们从右到左滑动。要禁用动画,请使用 animation: { duration: 0 }。这里是更新的fiddle链接 - Kukic Vladimir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接