将 JSON 文件与 Chart.js 结合使用

2023-12-07

我一直在寻找chart.js相关问题,但似乎没有两个开发人员就如何使用显示图表给出相同的答案chart.js + JSON.

我正在尝试使用 JSON 文件显示图表 - 特别是“金额”列表及其相关标签(“2017 年 1 月”,...)。

图表画布显示得很好,没有控制台日志错误,但没有图表本身。我缺少什么?

Thanks!

这是我的 Chart.js 代码:-

var labels = [];
var data = [];

$.getJSON("https://jsonblob.com/api/jsonBlob/26078b70-6b6f-11e7-a38a-bf689f57642c"), function (data) {
  $.each(data.customers.amounts, function(key, value){
    var labels = json.map(function(item) {
      labels.push(item.key);
   });
    var data = json.map(function(item) {
      data.push(item.value);
   });
   });
}

var ctx = document.getElementById('myChart').getContext('2d');
var chart = new Chart(ctx, {
    type: 'line',
    data: {
        datasets: [{
            labels: labels,
            backgroundColor: 'rgb(129, 198, 2228)',
            borderColor: 'rgb(0, 150, 215)',
            data: data
        }]
    },
    options: {
      responsive: 'true',
    }
});

这是我的 JSON 文件:-

{
  "customers": [
    {
      "first_name": "John",
      "last_name": "Doe",
      "account": "123456",
      "period": "13th July - 13th August",
      "due_date": "14th September",
      "amounts": [
        ["January 2017", 121.23],
        ["February 2017", 145.23],
        ["March 2017", 55.12],
        ["April 2017", 78.58],
        ["May 2017", 89.13],
        ["June 2017", 45.78],
        ["July 2017", 90.22]
      ]
    }
  ]
}

几个问题:

  • since $.getJSON()方法是异步的,您应该在其中构造图表's回调函数。
  • 您错误地循环了响应数据。可以很简单:

­

    var labels = data.customers[0].amounts.map(function(e) {
       return e[0];
    });

    var data = data.customers[0].amounts.map(function(e) {
       return e[1];
    });
  • 你正在添加labels数组到您的数据集,而它属于data object.

这是您的代码的修订版本:

$.getJSON("https://jsonblob.com/api/jsonBlob/26078b70-6b6f-11e7-a38a-bf689f57642c", function(data) {
   var labels = data.customers[0].amounts.map(function(e) {
      return e[0];
   });
   var data = data.customers[0].amounts.map(function(e) {
      return e[1];
   });

   var ctx = document.getElementById('myChart').getContext('2d');
   var chart = new Chart(ctx, {
      type: 'line',
      data: {
         labels: labels,
         datasets: [{
            backgroundColor: 'rgb(129, 198, 2228)',
            borderColor: 'rgb(0, 150, 215)',
            data: data
         }]
      },
      options: {
         responsive: 'true',
      }
   });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
<canvas id="myChart"></canvas>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 JSON 文件与 Chart.js 结合使用 的相关文章

随机推荐