Highcharts не отображает серии с большим количеством точек данных
У меня есть диаграмма, которую я хотел бы отобразить на основе диапазона дат от пользователя. Данный график имеет точки данных каждые 15 минут. Таким образом, для каждой серии может быть много точек данных, если пользователи выбирают большой диапазон дат. Вот несколько примеров:
в первом примере диаграмма показывает. Во втором примере диаграмма не отображается. Существует демо Highstock ( 52,000 точек с группировкой данных), которая работает с большим количеством точек данных. Я попытался изменить вышеуказанные графики на график highstock и все еще имею те же результаты.
что я могу сделать, чтобы это исправить?
2 ответов
Это связано с турбо порог:
" когда ряд содержит массив данных, который длиннее этого, только один размерные массивы чисел или двумерные массивы с x и y значения разрешены. Также тестируется только первый пункт, а остальные предполагается тот же формат. Это экономит дорогостоящую проверку данных и индексирование в длинных сериях."
по умолчанию установлено значение 1000 пунктов. Ваша карта не рендеринг, потому что каждая точка в вашей серии является объектом, а их число больше порога.
здесь jfFiddle демонстрируя свой участок работы с порог в 2000.
вот модифицированный фрагмент кода:
plotOptions: {
spline: {
turboThreshold: 2000,
...
другим решением было бы кодировать данные серии в 2-d массиве вместо того, чтобы иметь каждую точку, представленную и объект со свойствами x-Y.
обходной путь для turboThreshhold-это что-то вроде этого, если вы генерируете свой ответ с помощью PHP:
if(count($responseObj) > 1000){
$modolo = round(count($responseObj) / 1000);
for($i = count($responseObj)-1; $i >= 0 ; $i--){
if(($i % $modolo) != 0){
unset ($responseObj[$i]);
}
}
$responseObj = array_merge($responseObj);
}