chartjs - 散点图的json数据,日期问题

时间:2017-06-04 13:00:43

标签: json chart.js

我有散点图,它没有显示日期的X轴:

var chart = new Chart(ctx, {
    type: 'line',
    data: {
        datasets: [{
            label: 'label',
            data: [data],
            borderColor: "#000066"
        }],
    },
    options: {
        scales: {
            xAxes: [{
                type: "time",
                display: true,
                scaleLabel: {
                    display: true,
                    labelString: 'Date'
                },
            }]
        }
    }
});

变量数据采用JSON格式:

{"x":"2017-06-03T13:23:47.129Z","y":1.306}, 
{"x":"2017-06-03T14:17:24.960Z","y":1.299}, 
{"x":"2017-06-03T14:17:46.565Z","y":1.306},
...

如果我尝试手动添加数据并在JS中将日期作为Date对象,那么它可以工作:

data: [{ "x": new Date("2017-06-03T14:17:46.565Z"), "y": 1.306 }]

但我需要在JSON中添加数据。

更新 - 定义数据变量

            for (var j = 0; j < source.length; j++) {                
                x = new Date(source[j].Date);
                y = source[j].value;
                var json = { x: x, y: y };
                data.push(json);
            }

1 个答案:

答案 0 :(得分:0)

我能够在不使用data变量的括号的情况下使其工作:JSFiddle

EDIT1:您如何定义变量?有没有理由在图表创建时将其作为一个数组?

EDIT2:我看到发生了什么。正在创建的json变量是您想要的JSON的字符串表示形式。 Chart.js在定义数据集时并不理解。您需要一个实际的JSON对象,如下所示:

var source = [{Date:"2017-06-03T13:23:47.129Z",value:1.306}, 
{Date:"2017-06-03T14:17:24.960Z",value:1.299}, 
{Date:"2017-06-03T14:17:46.565Z",value:1.306}];

var json = [];
for (var j = 0; j < source.length; j++) {
  var jsonObj = {x: source[j].Date, y: source[j].value};
  json.push(jsonObj);
}