【问题标题】:Assigning series data to highchart using Java ArrayList使用 Java ArrayList 将系列数据分配给 highchart
【发布时间】:2013-02-13 09:30:15
【问题描述】:

我想使用 Highcharts 创建一个饼图。该系列的类别和数据来自两个 java 数组。但是图表没有绘制。将两个静态数组传递给 jsfiddle 中的类别和数据绘制图表。

我尝试将 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
                }]

【问题讨论】:

    标签: javascript highcharts


    【解决方案1】:

    您的值很可能是字符串,而应该是数字。您必须解析该字符串,例如:

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

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 2016-07-01
      • 2015-08-11
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多