2013-02-13 30 views
1

我想使用Highcharts創建餅圖。該系列的分類和數據來自兩個java數組。但是圖表不是繪圖。將兩個靜態數組傳遞給jsfiddle中的類別和數據繪製圖表。使用Java將系列數據分配給高分佈圖ArrayList

我嘗試將java數組轉換爲字符串並使用Highcharts how to use JavaScript variable as series data source?中給出的解決方案。但它沒有奏效。

有人可以請弄清楚錯誤是什麼。

$(function() { 
     var chart; 

     $(document).ready(function() { 

      var names = document.getElementById("listofnames").value; 
      var datas = document.getElementById("listofdata").value; 

      var c = names.split(","); 
      var d = datas.split(","); 

      chart = new Highcharts.Chart({ 
       chart: { 
        renderTo: 'container', 
        plotBackgroundColor: null, 
        plotBorderWidth: null, 
        plotShadow: false 
       }, 
       title: { 
        text: 'Browser market shares at a specific website, 2010' 
       }, 
       tooltip: { 
        pointFormat: '{series.name}: <b>{point.percentage}%</b>', 
        percentageDecimals: 1 
       }, 
       plotOptions: { 
        pie: { 
         allowPointSelect: true, 
         cursor: 'pointer', 
         dataLabels: { 
          enabled: false 
         }, 
         showInLegend: true 
        } 
       }, 
       series: [{ 
        type: 'pie', 
        name: 'Browser share', 
        categories : c, 
        data: d 
       }] 
      }); 
     }); 

    }); 
    </script> 
</head> 

<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div> 
<s:hidden name="listofnames" id="listofnames" value="%{NameList}"/> 
<s:hidden name="listofdata" id="listofdata" value="%{DataList}"/> 

我也嘗試過將數據傳遞給系列作爲一個字符串作爲Highchart plugin not accepting array for series data?建議。即使這不起作用。

     var names = document.getElementById("listofnames").value; 
      names = names.replace("[",""); 
      names = names.replace("]",""); 
      var datas = document.getElementById("listofdata").value; 
      datas = datas.replace("[",""); 
      datas = datas.replace("]",""); 

      var c = names.split(","); 

      var d = datas.split(","); 

      var datastring = ""; 

      for(var i=0; i<c.length; i++){ 

       datastring += "['"+c[i]+"',"+d[i]+"]"; 
      } 


         series: [{ 
        type: 'pie', 
        name: 'Browser share', 
        data: datastring 
       }] 

回答

0

很可能你的值是字符串,而應該是數字。例如:您必須解析該字符串,例如:

$.map(c, function(n){ 
    return parseFloat(n); 
});  
$.map(d, function(n){ 
    return parseFloat(n); 
});