Временные ряды canvas.js построены неправильно (с декабря по январь) - PullRequest
0 голосов
/ 13 января 2019

Как вы видите, я строю график зависимости КВА от времени на линейном графике (canvas.js), проблема в том, что данные отображаются с 14 января 2019 года по 13 февраля 2018 года, но фактические данные относятся к 14 декабря 2018 года до 14 января 2019. Не уверен, что это ошибка в canvas.js или я что-то не так делаю. Как исправить.

var options = {
    zoomEnabled: true,
    animationEnabled: true,
    title: {
        text: selectedText
    },
    axisX:{
        title: "Timeline",
        gridThickness: 1
    },
    axisY: {
        title: "KVA",
        includeZero: false,
        lineThickness: 1

    },
    data: [{
        type: "line",
        dataPoints:dataPoints
        }]  // random data
};

Мои точки данных выглядят так

dataPoints.push({ x: new Date(2018,12,13,06,09,38), y: 384 }); 
dataPoints.push({ x: new Date(2018,12,13,06,12,46), y: 386 }); 
dataPoints.push({ x: new Date(2018,12,13,06,15,53), y: 379 }); 
dataPoints.push({ x: new Date(2018,12,13,06,19,02), y: 377 });
....
....
dataPoints.push({ x: new Date(2019,01,11,17,11,12), y: 632 }); 
dataPoints.push({ x: new Date(2019,01,11,17,13,35), y: 616 }); 
dataPoints.push({ x: new Date(2019,01,11,17,15,49), y: 614 });

Как исправить? canva.js time series

1 Ответ

0 голосов
/ 13 января 2019

Плохо, месяц должен начинаться с 0 индекса, а не с 1 индекса. Правильный код

while($row = mysqli_fetch_array($result)){

           $str = str_replace(array(":"," "),"-", $row['datetime']);
           $t = explode("-", $str);
           $month = $t[1]-1;

           echo 'dataPoints.push({
                        x: new Date('.$t[0].','.$month.','.$t[2].','.$t[3].','.$t[4].'),
                        y: '.$row['KVA'].'
                    });';
                }

То есть 1 необходимо вычесть из месяца SQL, чтобы индекс 0 работал правильно (

).
...