Динамические столбцы на основе старших графиков с данными jquery и php

0

Я пытаюсь создать колонки на основе столбцов, и вот мой код в jquery:

var options = {
            chart: {
                renderTo: 'container',
                type: 'column'
            },
            credits: {
                enabled: false
            },
            title: {
                text: 'PCP Histogram',
                x: -20
            },
            xAxis: {
                categories: [{}]
            },
            legend: {
                        layout: 'vertical',
                        align: 'right',
                        verticalAlign: 'top',
                        x: -10,
                        y: 100,
                        borderWidth: 0
                    },
            tooltip: {
                        formatter: function() {
                        var s = '<b>'+ this.x +'</b>';

                            $.each(this.points, function(i, point) {
                            s += '<br/>'+point.series.name+': '+point.y;
                            });

                            return s;
                        },  
                        shared: true
                },
            series: [{},{}]
        };
                   $.ajax({
            url: "file.php",

            type: "post",
            dataType: "json",
            success: function(data){

                options.xAxis.categories = data.categories;
                options.series[0].name = 'Avg1';
                options.series[0].data = data.avg1;
                options.series[1].name = 'Avg2';
                options.series[1].data = data.avg2;

                var chart = new Highcharts.Chart(options);

И я получаю данные из файла php следующим образом: file.php

    $graph_data = array('categories'=>$categories, 'avg1'=>$avg, 'avg2'=>$avg);

print json_encode($graph_data, JSON_NUMERIC_CHECK);

Он отлично работает с двумя столбцами для каждой категории. Теперь я хочу: graph_data может иметь n число avg-данных, поэтому в основном это будет n количество столбцов.

   $graph_data = array('categories'=>$categories, 'avg1'=>$avg1, ... 'avgn'=>$avgn);

Когда я делаю это вручную, это работает, но я не знаю, сколько из них будет там, поэтому я хочу, чтобы код выполнял i.

Любая идея, как я могу это сделать? Любая помощь оценивается.

Теги:
highcharts

1 ответ

2

создайте массив avg вместо avg1, avg2 и т. д....

$graph_data = array('categories'=>$categories, 'avgs'=>$array_of_avgs)

затем в стороне javascript

success: function(data){

            options.xAxis.categories = data.categories;
            for(var i in data.avgs){
               options.series[i].name = 'Avg'+i;
               options.series[i].data = data.avgs[i];
            }


            var chart = new Highcharts.Chart(options);

И все будет хорошо

  • 0
    Привет, как я должен определить серию выше, когда я пробую ваш код, он выдает ошибку, Не могу установить свойство 'name' для необъекта. Я думаю, что ряд в опциях диаграммы - проблема. Вы знаете, как я могу это починить?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню