使用 JSON 数据创建 HighCharts 饼图

Create a HighCharts pie chart using JSON Data

我正在尝试使用从 cartoDB SQL 返回的 JSON 数据绘制饼图。

我正在使用 High Charts 网站上提供的示例,但图表未加载。下面是我的 javascript 代码。你能看出什么不对吗?

$(document).ready(function() {
  var options = {
      chart: {
        renderTo: 'container',
        type: 'pie'
      },
      series: [{}]
  };

  var jsonURL = 'https://1025.cartodb.com/api/v2/sql?&q=SELECT status FROM kenya_primary_schools';

  $.getJSON(jsonURL, function(data) {
    var obj = data.rows, hObj = [];
    if(obj.length){
      for(var i=0; i<obj.length; i++){
        hObj.push([obj[i]['status']]);
      }
      console.log(hObj);
    }
    options.series[0].data = data;
    var chart = new Highcharts.Chart(options);
  });
});

您的代码中存在一些语法错误。您可以尝试这样更正,然后再试一次。

$(document).ready(function() {
var options = {
    chart: {
        renderTo: 'container',
            type: 'pie'
    },
   series: [{}]
},
    jsonURL = 'https://1025.cartodb.com/api/v2/sql?&q=SELECT status FROM kenya_primary_schools';

$.getJSON(jsonURL, function(data) {
  var obj = data.rows,
     hObj = [],
    chart;
  if (obj.length) for (var i=0; i<obj.length; i++) hObj.push([obj[i].status]);
  options.series[0].data = data;
  chart = new Highcharts.Chart(options);
});
});

在对你的代码进行一定程度的修改后,我得到了以下结果:

你应该做的重点

您需要从 Highcharts 文档中查看如何将数据对象从 Highcharts doc

提供给 series.data

由于 cartoDB 中有两个选项:PRIVATE 和 PUBLIC,您应该考虑如何将它们存储在 array/object 中以及如何从饼图。

提示:

options.series[0].data=数据;

hObj.push([obj[i]['status']]);