Как сделать highcharts по умолчанию равным 0 для отсутствующих данных
У меня есть временной ряд с интервалом в 1 минуту. Я хотел бы показать это на диаграмме с отсутствующими точками как 0.
Я нашел xAxis.ordinal и отключил это, что отображает временные ряды, правильно распределенные. Проблема в том, что он напрямую рисует линии между точками, не обращаясь к 0 для отсутствующих данных.
Ответы
Ответ 1
Один из способов - предварительная обработка данных, замена null
на 0
:
var withNulls = [null, 12, 23, 45, 3.44, null, 0];
var noNulls = withNulls.map(function (item) {
return (item === null) ? 0 : item;
});
Пример сохранен на jsfiddle: http://jsfiddle.net/7mhMP/
Ответ 2
Я подробно просмотрел ссылку API HighCharts, но они не предлагают эту опцию. То, что они предлагают, - это возможность отключить соединение точек, когда null
находятся в промежутке (только линейные и региональные диаграммы):
var chart = new Highcharts.Chart({
plotOptions: {
line: {
connectNulls: false
}
}
});
Это значение по умолчанию в соответствии с API, поэтому я не уверен, почему ваши данные соединяются с значениями null
между ними. Может быть, они изменили настройки по умолчанию в последнее время?
![Example of HighChart with missing data]()
Я считаю, что это хорошее представление ваших данных, потому что отмена null
до 0
кажется неправильной.
Ответ 3
Вы можете заполнить пропущенные данные как 0.
Поскольку highchart не соответствует интервалу xAxis.
Если у вас есть временной ряд с интервалом 1 минута, вы должны установить каждые отсутствующие данные минута в 0;
Если у вас есть временные ряды с интервалом 1 день, вы должны установить каждый отсутствующий день данных на 0.
Ответ 4
У меня такая же проблема, и я понимаю, что вы должны установить свою структуру данных в базе данных как VARCHAR и установить значение по умолчанию равным null, так что, когда у вас нет данных, он становится NULL. Затем он принимает нулевые значения, а highchart не отображает и не связывает недостающие области с значениями null
.
Кроме того, вы должны получать данные как null
и не менять их на ''
.
см. этот рабочий пример:
var chart = new Highcharts.Chart({
chart: {
defaultSeriesType: 'spline', // use line or spline
renderTo: 'container1'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
series: [{
data: [9, 4,null, 2, 1, 0, 6, 5, 4, 1, 6, 4]
}]
});
здесь - это скрипка с двумя разными диаграммами с использованием null
и ''
UPDATE:
Если вы используете parseINT для ввода данных, вы должны помнить, что parseINT(NULL)
дает вам NAN
, поэтому для этой ошибки попробуйте вручную нажать NULL с чем-то вроде этого:
var val = parseInt(rows[i]);
if (isNaN(val))
{
val = null;
result.push(val);
}