Я пытаюсь создать колонки на основе столбцов, и вот мой код в 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.
Любая идея, как я могу это сделать? Любая помощь оценивается.
создайте массив 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);
И все будет хорошо