使用Java将系列数据分配给高分布图ArrayList
问题描述:
我想使用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
}]
答
很可能你的值是字符串,而应该是数字。例如:您必须解析该字符串,例如:
$.map(c, function(n){
return parseFloat(n);
});
$.map(d, function(n){
return parseFloat(n);
});