How to pass array in highchart ??

2019-08-15 04:52发布

I have just started using highcharts and here I am stuck -

I have 2 array named - js_platform, js_totalTest , which I am fetching from the database.

The code to generate chart is -

<!DOCTYPE html>
    <body>
    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
    <script src="http://code.highcharts.com/highcharts.js"></script>
    <script src="http://code.highcharts.com/modules/exporting.js"> </script>
    <script>
$(function () {
    js_platform = <?php echo json_encode($platform); ?>;
    js_totalTest = <?php echo json_encode($totalTest); ?>;
        $('#container').highcharts({
            chart: {
                type: 'column'
            },
            title: {
                text: 'Overall avalibility of testcases on each platform'
            },
            xAxis: {
                categories: js_platform
            },
            yAxis: {
                min: 0,
                title: {
                    text: 'Total fruit consumption'
                },
                stackLabels: {
                    enabled: true,
                    style: {
                        fontWeight: 'bold',
                        color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
                    }
                }
            },
            legend: {
                align: 'right',
                x: -70,
                verticalAlign: 'top',
                y: 20,
                floating: true,
                backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColorSolid) || 'white',
                borderColor: '#CCC',
                borderWidth: 1,
                shadow: false
            },
            tooltip: {
                formatter: function() {
                    return '<b>'+ this.x +'</b><br/>'+
                        this.series.name +': '+ this.y +'<br/>'+
                        'Total: '+ this.point.stackTotal;
                }
            },
            plotOptions: {
                column: {
                    stacking: 'normal',
                    dataLabels: {
                        enabled: true,
                        color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white',
                        style: {
                            textShadow: '0 0 3px black, 0 0 3px black'
                        }
                    }
                }
            },
            series: [{
                name: 'John',
                data: [5, 3, 4, 7, 2]
            }, {
                name: 'Jane',
                data: [2, 2, 3, 2, 1]
            }, {
                name: 'Joe',
                data: [3, 4, 4, 2, 5]
            }]
        });
    });
    </script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

</body>
</html>

Now for the series I want to send the array values of js_totalTest.

Here if i do something like **series: [{data: [js_totalTest]}]** , it does not display anything.

How I can do this ? Please guide.

2条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-08-15 05:44

Try this way like. Your array js_totalTest contains the data and name values

Loop your array data

var arr = [];
for(var i=0;i<js_totalTest.length;i++)
{
    arr[i] = {};
    arr[i]['name'] = '';  //Here push your series name field in your example "John, Jane etc"

    for(var j=0;j<s.length;j++)
    {
            arr_data.push(parseInt(s[j]));
    }
    arr[i]['data'] = parseInt('') ;  // Here push your series data (Eg: 5 ,3 , etc.)
}

Pass arr in series

series: arr
查看更多
对你真心纯属浪费
3楼-- · 2019-08-15 05:49

Do something like -

series: 
    [{
        data:  [<?php echo join($totalTest, ',') ?>]
    }]

Refer to the link (http://www.highcharts.com/docs/working-with-data/preprocessing-data-from-a-database)

查看更多
登录 后发表回答