Php Highcharts返回错误15,但图表是否正确?
我已经做了几个小时了,我不知道出了什么问题。它显示正确的图形,但我不能在任何点上悬停。我已经通读了我的var_dump(),所有记录都井然有序。我是否在某个时候把日期转换错了 我的图表是什么样子的(这是正确的): 我得到的错误:“Highcharts错误#15:www.Highcharts.com/errors/15” Highcharts希望对数据进行排序 当您试图创建数据未按升序X排序的直线系列或股票图表时,会发生这种情况。出于性能原因,Highcharts不会对数据进行排序,而是要求实现者对数据进行预排序 我的控制台: 我的海图代码Php Highcharts返回错误15,但图表是否正确?,php,javascript,graph,highcharts,Php,Javascript,Graph,Highcharts,我已经做了几个小时了,我不知道出了什么问题。它显示正确的图形,但我不能在任何点上悬停。我已经通读了我的var_dump(),所有记录都井然有序。我是否在某个时候把日期转换错了 我的图表是什么样子的(这是正确的): 我得到的错误:“Highcharts错误#15:www.Highcharts.com/errors/15” Highcharts希望对数据进行排序 当您试图创建数据未按升序X排序的直线系列或股票图表时,会发生这种情况。出于性能原因,Highcharts不会对数据进行排序,而是要求实现者
$.post('/card/read_graph_json', inputs, function(data) {
json = jQuery.parseJSON(data);
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'spline'
},
global: {
useUTC: false
},
plotOptions: {
series: {
animation: false
}
},
title: {
text: '{{ $card->name }}'
},
subtitle: {
text: null
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
month: '%b',
year: '%b'
}
},
yAxis: {
title: {
text: null
},
},
tooltip: {
formatter: function() {
var monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
date = new Date(this.x);
return '<strong>'+ this.series.name +'</strong><br/>'+ monthNames[date.getMonth()] + '. ' + date.getDay() + ', ' + date.getFullYear() +': '+ this.y;
}
},
series: [json]
});
});
我使用了这个函数
function aasort (&$array, $key) {
$sorter=array();
$ret=array();
reset($array);
foreach ($array as $ii => $va) {
$sorter[$ii]=$va[$key];
}
asort($sorter);
foreach ($sorter as $ii => $va) {
$ret[$ii]=$array[$ii];
}
$array=$ret;
}
这是我代码的一部分
$data = array();
foreach ($records as $record) {
$data[] = array(
'time' => strtotime($record->created_at) * 1000,
'value' => floatval($record->read_tracker_value($tracker->id)->value)
);
}
aasort($data, 'time');
$new_data = array();
foreach ($data as $record) {
$new_data[] = array(
$record['time'],
$record['value']
);
}
$serie = array(
'name' => $tracker->name,
'data' => $new_data
);
塔达 这并不是那么容易,如果你能避免排序,它会更好,排序不是一个便宜的操作,它的时间相当昂贵。如果你的数据结构很大,显然会降低性能。这个选项不错,它也在服务器端排序,所以比在客户端排序更好。如果你的数据集很大,那么把它分成几个部分。答案是好的。另外,如果要避免排序,只需抑制错误。
$data = array();
foreach ($records as $record) {
$data[] = array(
'time' => strtotime($record->created_at) * 1000,
'value' => floatval($record->read_tracker_value($tracker->id)->value)
);
}
aasort($data, 'time');
$new_data = array();
foreach ($data as $record) {
$new_data[] = array(
$record['time'],
$record['value']
);
}
$serie = array(
'name' => $tracker->name,
'data' => $new_data
);