Подтвердить что ты не робот

Как сделать highcharts по умолчанию равным 0 для отсутствующих данных

У меня есть временной ряд с интервалом в 1 минуту. Я хотел бы показать это на диаграмме с отсутствующими точками как 0.

Я нашел xAxis.ordinal и отключил это, что отображает временные ряды, правильно распределенные. Проблема в том, что он напрямую рисует линии между точками, не обращаясь к 0 для отсутствующих данных.

4b9b3361

Ответ 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);
}