2017-06-01 83 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