2014-11-06 48 views
0

我使用C3.js创建条形图。C3条形图条数未知数

我的情况是这样的:

我要收集一个X数量的数据,并以我的图表显示他们为了这个,我已经创建了下面的脚本:

$.ajax({ 
    type: 'POST', 
    url: '/AcademyStat/academy_module_user_report', 
    dataType: 'json', 
    data: { 
     request: 'ajax', 
     team_id: team_id, 
     module_id: module_id 
    }, 
    success: function (data) 
    { 
     if(data != null) 
     { 
      for (var i = 0; i < data.length; i++) 
      { 
       var add_data = [data[i]['name'], data[i]['score']] 
       char_data.push(add_data); 
      } 
      var chart = c3.generate({ 
       bindto: '#score_chart', 
       data: { 
        columns: [ 
         char_data 

        ], 
        type: 'bar' 
       } 
      }); 
     } 
    } 
}); 

正如你可以看到上面的例子中,我循环数据,然后将其添加到数组,直到我有一个数组的数组(未知数据)。

然而,当我在浏览器中运行此我得到的console以下错误:

Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 286.6,NaN L286.6,NaN L531.4,NaN L531.4,NaN z" d3.min.js:5 
Error: Invalid value for <path> attribute d="M 1102.6,NaN L1102.6,NaN L1347.3999999999999,NaN L1347.3999999999999,NaN z 

但是如果我改用pop数据显示出来罚款的方法。 pop();唯一的问题是,我将不得不知道我的char_data阵列有多少阵列,这是我不可能知道的。

有没有人试过类似的东西或知道我可以如何解决这个问题?

回答

1

它看起来像你的图表columns设置到一个数组的数组内columns: [ [ ['name', 'score'] ] ]

更改columns: [ char_data ]columns: char_data

$.ajax({ 
    type: 'POST', 
    url: '/AcademyStat/academy_module_user_report', 
    dataType: 'json', 
    data: { 
     request: 'ajax', 
     team_id: team_id, 
     module_id: module_id 
    }, 
    success: function (data) { 
     if (data != null) { 
      for (var i = 0; i < data.length; i++) { 
       var add_data = [data[i]['name'], data[i]['score']] 
       char_data.push(add_data); 
      } 
      var chart = c3.generate({ 
       bindto: '#score_chart', 
       data: { 
        columns: char_data, 
        type: 'bar' 
       } 
      }); 
     } 
    } 
});