2017-06-01 64 views
-1

我的红宝石后端产生具有与它的子类别的类别阵列一个JSON散列(每个子类别具有合计值):Highcharts堆积条形图与不同类别

{"IT, Internet, Telecom"=>[["Testing", 3], ["Banking Software", 1], ["ERP", 2], ["IT Security", 2], ["Consulting, Outsourcing", 1], ["Project Management", 1]], "Accounting, Management Accounting, Corporate Finance"=>[["Offshore", 1], ["ACCA", 1]], "Administrative Personnel"=>[["Workflow Management", 1]]} 

该散列是在数据变量。 我需要这个转换为堆叠条形图(高图)与类别总数(对于“IT”它是10),并且还在此类别(3,1,2,2,1,1)内堆叠子类别。问题是,我想要具有与每个类别的不相关数据的子类别片段的类别列。以下是我已经尝试过:

$(function() { 
    function drawChart(url) { 
    $.getJSON(url, function (data) { 
     $.each(data, function (i, point) { 
     point.y = point.data; 
     }); 
     var chart = Highcharts.chart('seekers_by_category', { 
     chart: { 
      type: 'bar' 
     }, 
     title: { 
      text: 'Seekers category' 
     }, 
     tooltip: { 
      enabled: true, 
      pointFormat: '<b>{point.y}</b> seekers' 
     }, 
     xAxis: { 
      type: 'category' 
     }, 
     plotOptions: { 
      bar: { 
      stacking: 'normal', 
      allowPointSelect: true, 
      cursor: 'pointer', 
      dataLabels: { 
       enabled: true, 
       format: '<b>{point.name}</b>: {point.y} seekers', 
       style: { 
        color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black' 
       } 
      } 
      }, 
      series: { 
      stacking: 'normal' 
      } 
     }, 
     series: [ 
      { 
      name: 'Seekers', 
      data: data 
      } 
     ] 
     }) 
    }); 
    } 
    var mainUrl = $('#seekers_by_category').data('url'); 
    drawChart(mainUrl); 
}); 

回答

0

最后,我已经转换JSON这个格式:

[{:name=>"Testing", :data=>[["IT, Internet, Telecom", 3]]}, {:name=>"Banking Software", :data=>[["IT, Internet, Telecom", 1]]}, {:name=>"ERP", :data=>[["IT, Internet, Telecom", 2]]}, {:name=>"IT Security", :data=>[["IT, Internet, Telecom", 2]]}, {:name=>"Consulting, Outsourcing", :data=>[["IT, Internet, Telecom", 1]]}, {:name=>"Offshore", :data=>[["Accounting, Management Accounting, Corporate Finance", 1]]}, {:name=>"Workflow Management", :data=>[["Administrative Personnel", 1]]}, {:name=>"ACCA", :data=>[["Accounting, Management Accounting, Corporate Finance", 1]]}, {:name=>"Mutual Funds", :data=>[["Banks, Investments, Finance", 1]]}, {:name=>"Project Management", :data=>[["IT, Internet, Telecom", 1]]}, {:name=>"Assistant", :data=>[["Marketing, Advertising, PR", 1]]}] 

有:

g = {} 
h.each do |k,n| 
    a, b = k 
    g[b] = [] unless g.key?(b) 
    g[b] << [a, n] 
end 

g.map{ |k, v| { name: k, data: v } } 

,改变系列只是:

series: data