如何使用3个不同的系列类别名称创建图表

时间:2019-05-17 07:27:40

标签: php jquery highcharts

我目前正在新建一个购物车,我只是想知道这些购物车是否可行。我想创建一个具有3个类别的购物车

3个类别:

  1. 低优先级
  2. 中等优先级
  3. 高优先级

因此,如果我的类别为3,则条形也为3,并且名称和数据也不同。

在我的console.log中,数据结果显示。

result

我的输出: wrong output

我的功能代码:

$.getJSON('ajax/ams_sla_report_chart.php', function(data,name){
    console.log(data);
    var json_data = "";
    var json_name = "";
    var chart = new Highcharts.Chart({
        chart: {
            renderTo: 'containers',
            type: 'column',
            inverted: false    
        },
        legend: {
            layout: 'horizontal',
            align: 'right',
            verticalAlign: 'middle'
          },
        yAxis: {
            title: {
                text: 'SLA PERCENTAGE'
            }

        },
        title: {
                text: 'Priority Based on SLA'
        },

        series:[{
            name:'Low Priority',
            colorByPoint: true,
            data:data[0]
        },

        {
            name:'Medium Priority',
            colorByPoint: true,
            data:data[1]
        },


        {
            name:'High Priority',
            colorByPoint: true,
            data:data[2]
        },


        ]
    });


    json_data = chart.series.data = data;



    function showValues() {
    $('#alpha-value').html(chart.options.chart.options3d.alpha);
    $('#beta-value').html(chart.options.chart.options3d.beta);
    $('#depth-value').html(chart.options.chart.options3d.depth);
    }

    // Activate the sliders
    $('#sliders_eng input').on('input change', function () {
        chart.options.chart.options3d[this.id] = parseFloat(this.value);
        showValues();
        chart.redraw(false);
    });

    showValues();


});

输出必须为:

Highcharts.chart('container', {
    chart: {
        type: 'column'
    },
    title: {
        text: 'SLA BASED ON PRIORITY AND PERCENTAGE OF HIT'
    },
    subtitle: {
        text: 'Source: WorldClimate.com'
    },
    xAxis: {
        categories: [
            'Low',
            'Medium',
            'High',
        ],
        crosshair: true
    },
    yAxis: {
        min: 0,
        title: {
            text: 'SLA BASED ON PERCENTAGE (mm)'
        }
    },
    tooltip: {
        headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
        pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
            '<td style="padding:0"><b>{point.y}</b></td></tr>',
        footerFormat: '</table>',
        shared: true,
        useHTML: true
    },
    plotOptions: {
        column: {
            pointPadding: 0.2,
            borderWidth: 0
        }
    },
    series: [{
        name: 'CLOSE MR',
        data: [49.9, 71.5, 106.4]

    }, {
        name: 'OPEN MR',
        data: [83.6, 78.8, 98.5]

    }, {
        name: 'TOTAL MR HIT',
        data: [48.9, 38.8, 39.3]

    }, {
        name: 'TOTAL MR HIT AVERAGE',
        data: [50, 38.8, 39.3]

    }]
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>

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

1 个答案:

答案 0 :(得分:1)

您需要将数据预处理为Highcharts所需的格式:

var data = [
        ['Low Priority', 100, 9],
        ['Medium Priority', 100, 2],
        ['High Priority', 100, 1]
    ],
    categories = [],
    series = [];

data.forEach(function(arr) {
    arr.forEach(function(el, i) {
        if (i === 0) {
            categories.push(el);
        } else if (series[i - 1]) {
            series[i - 1].data.push(el)
        } else {
            series.push({
                data: [el]
            });
        }
    });
});


Highcharts.chart('container', {
    ...
    series: series
});

实时演示: http://jsfiddle.net/BlackLabel/xu6wy910/