0

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

我正在使用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);
  });
});
4

2 回答 2

1

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

私人与公共饼图

你应该做的关键点

您需要从 Highcharts 文档中检查如何将数据对象从Highcharts 文档提供给 series.data

由于您有两个选项cartoDB:PRIVATE 和 PUBLIC,您应该考虑如何将它们存储在数组/对象中,以及如何从饼图中形成数据对象。

暗示:

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

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

于 2016-06-03T12:54:52.857 回答
0

您的代码中有一些语法错误。您可以尝试像这样更正并再试一次。

$(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);
});
});
于 2016-06-03T12:35:00.420 回答