Segun la imagen que pones y basandome en tu pregunta anterior, la estructura del array para la propiedad series debe ser de esta forma:
series: [
{
name: 'c3',
// 9 10 11 12
data: [270.74, 295.42, 289.78, 157.91]
},
{
name: 'c4',
// 9 10 11 12
data: [1441.32, 1551.74, 1429.46, 1121.55]
}]
y la propiedad categories
deberia tener las semanas ( week
)
categories : ['9', '10', '11', '12']
entonces deberias modificar tu consulta y la estructura del codigo json.
$sql="exec [RIA].[dbo].[idle] 1,'".$ip."','',''";
$rs=odbc_exec($connection,$sql);
$data = array(
'categories' => array(),
'series' => array()
);
while( odbc_fetch_row($rs) )
{
$week = odbc_result($rs,"week");
$hours = odbc_result($rs,"hours");
$team = odbc_result($rs,"team");
if( !isset($data['series'][$team]) )
$data['series'][$team] = array();
array_push($data['series'][$team], $hours);
if( !in_array($week, array_values($data['categories'])) )
$data['categories'][] = $week;
}
header('Content-type: application/json; charset=utf-8');
die(json_encode($data));
json_encode($data)
te devolvería una estructura así:
{
"categories" : ["9","10","11","12"],
"series" : {
"C3" : ["270.74","295.42","289.78","157.91"],
"C4" : ["1441.32","1551.74","1429.46","1121.55"]
}
}
ahora modifica la forma en que recibes los datos en el cliente.
define una variable para las opciones del objeto highcharts
.
var chart_options;
define chart_options
:
chart_options = {
loading: {
labelStyle: {
top: '50%',
color: 'green'
},
style: {
backgroundColor: 'white'
}
},
chart: {
type: 'column',
width: 830,
height:410
},
title: {
text: "Idle Report"
},
xAxis: {
categories: ['9', '10', '11', '12']
},
yAxis: [{
title: {
text: 'Hours'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}],
min:0
},{ // Secondary yAxis
title: {
text: '',
style: {
color: '#4572A7'
}
},
labels: {
format: '{value} %',
style: {
color: '#4572A7'
}
},
opposite: true,
max: 100,
min:0
}],
tooltip: {
formatter: function () {
return '<b>' + this.x + '</b><br>' +
this.series.name + ': ' + this.y + '<br>' +
'Total: ' + this.point.stackTotal;
}
},
plotOptions: {
column: {
dataLabels: {
enabled: false,
color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white',
style: {
textShadow: '0 0 3px black, 0 0 3px black'
},
}
},
line: {
dataLabels: {
enabled: false
},
enableMouseTracking: true
},
spline: {
lineWidth: 2,
states: {
hover: {
lineWidth: 5
}
},
marker: {
enabled: false
}
}
},
series: [{
name: 'c3',
data: []
},
{
name: 'c4',
data: []
}]
};
inicializa el grafico:
$('#container7').highcharts(chart_options);
la forma en que obtendras los datos por ajax será:
$.ajax({
type: 'POST',
url: 'http://tupagina.com/obtener_datos',
dataType: 'json',
data: {},
success: function(response)
{
var updated_options = chart_options,
x;
updated_options.xAxis.categories = response.categories;
updated_options.series = [];
for(x in response['series'])
{
var serie = {};
serie['name'] = x;
serie['data'] = response['series'][x].map(function(item, index){
return parseFloat(item);
});
updated_options.series.push(serie);
}
$('#container7').highcharts(updated_options);
}
});
de tal forma que tendrias un grafico como este:
http://embed.plnkr.co/2UNgc18sCVsup8DPsJa8/
http://plnkr.co/edit/2UNgc18sCVsup8DPsJa8?p=preview