如何将缺省数据的高位图默认为0

时间:2012-05-01 07:57:10

标签: javascript highcharts

我有1分钟的时间序列。我想在缺少点的图表中显示为0。

我找到了xAxis.ordinal并将其关闭,显示时间序列正确间隔开。问题在于它直接在点之间绘制线,而不会为丢失的数据设置为0。

4 个答案:

答案 0 :(得分:5)

一种方法是预处理数据,将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/

答案 1 :(得分:5)

我已经彻底搜查了API reference of HighCharts,但他们没有提供这个选项。他们提供的是当null数据位于其间时(仅限行和区域图表)禁用点连接的选项:

var chart = new Highcharts.Chart({
    plotOptions: {
        line: {
            connectNulls: false
        }
    }
});

这是根据API的默认设置,因此我不确定为什么您的数据会在其间与null值相关联。也许他们最近改变了默认值?

Example of HighChart with missing data

我认为这是对您的数据的良好表示,因为默认null0似乎具有误导性。

答案 2 :(得分:1)

你需要将错过的数据填充为0。 因为高图不知道xAxis间隔。

如果您的时间间隔为1 分钟,则应将每个缺少的分钟数据设置为0; 如果您的时间序列为1 ,则应将每个缺少的数据设置为0。

答案 3 :(得分:0)

我有同样的问题,我的理解是你应该将数据库中的数据结构设置为VARCHAR并将默认值设置为null,这样如果没有数据,它将变为NULL。然后它接受空值,并且高亮显示不会显示并连接缺少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]
    }]

});

here是使用null''

的两个不同图表的小提琴

<强>更新
如果你使用parseINT推送数据,你应该记住parseINT(NULL)给你NAN所以对于这个bug,尝试用这样的东西手动推NULL:

var val = parseInt(rows[i]);
if (isNaN(val))
{
  val = null;
  result.push(val);
}