带有JSON数据的动态图表-CanvasJS

aza*_*own 5 javascript charts json canvasjs

我在使用CanvasJS生成图表时遇到问题

基本上我是从API获取数据的,我可以查看并检查JSON数组,但是当我为图表生成dataPoint时,我会遇到2个错误:数据字段上的数据无效和值字段上的NaN。

有人可以给我提示吗?

// Fetching the data
fetch('https://appbe-dev.clearvuesystems.co.uk/demandForecast/getLiveLineDataEverySecRestApi').then(response => {
  return response.json();
}).then(data => {
  // Work with JSON data here
 var jsonData = data;
 // Generating Data Points
 var dataPoints = [];

for (var i = 0; i <= jsonData.length - 1; i++) {
    dataPoints.push({ y: new Date(jsonData[i].source_ts), x: Number(jsonData[i].renewablesobligationconsumption) });
    console.log(dataPoints);
}

var chart = new CanvasJS.Chart("chartContainer", {
    data: [
        {
            dataPoints: dataPoints,
            type: "line",
        }
    ]
});

chart.render();
}).catch(err => {
 throw new Error( 'Impossible to get data' );
});
Run Code Online (Sandbox Code Playgroud)

这里的代码https://jsfiddle.net/azacrown/qkhb0dv3/

干杯

Vik*_*ngh 2

您没有正确治疗,data因此您得到了y:nullx:NaN

里面的内容data数组内的对象数组,因此[[{}, {}, {}...]]您需要相应地进行迭代。

使用此代码:

  data.forEach(function(array) {
    array.forEach(function(arrayItem) {
      dataPoints.push({
        y: new Date(arrayItem.source_ts),
        x: Number(arrayItem.renewablesobligationconsumption)
      });
    });
  });
Run Code Online (Sandbox Code Playgroud)

下面是完整的工作示例。现在你dataPoints已经准备好了,你可以在任何你想要的地方使用它:

  data.forEach(function(array) {
    array.forEach(function(arrayItem) {
      dataPoints.push({
        y: new Date(arrayItem.source_ts),
        x: Number(arrayItem.renewablesobligationconsumption)
      });
    });
  });
Run Code Online (Sandbox Code Playgroud)
// Fetching the data
fetch('https://example.com/my/endpoint').then(response => {
  return response.json();
}).then(data => {

  // Generating Data Points
  var dataPoints = [];

  data.forEach(function(array) {
    array.forEach(function(arrayItem) {
      dataPoints.push({
        y: new Date(arrayItem.source_ts),
        x: Number(arrayItem.xyzw)
      });
    });
  });
  
 console.log(dataPoints);

  var chart = new CanvasJS.Chart("chartContainer", {
    data: [{
      dataPoints: dataPoints,
      type: "line",
    }]
  });

  chart.render();
}).catch(err => {
  throw new Error('Impossible to get data');
});
Run Code Online (Sandbox Code Playgroud)