Highcharts - 用0

时间:2017-02-22 09:29:59

标签: javascript html highcharts

所以我有一个highcharts设置,我希望能够用0替换空值。

http://jsfiddle.net/e6y43oaf/

在JSFiddle上你可以看到 18th和19 (周末)没有人做过任何搜索,但是它会进入下一个点。

是否可以将这些空值替换为,而不是在每一行中都没有那么美观的空白? 我怀疑我可能不得不使用formatter标签来执行此操作。

1 个答案:

答案 0 :(得分:1)

Altough Higcharts具有connectNulls选项,它将直接连接之前的值和下一个值。我能想到的唯一方法是预处理数据,在将值附加到系列之前读取值并将空值转换为零,如下所示:

// var seriesdatagorfromsomewhere
for (var i = 0; i < seriesdatagorfromsomewhere.length; i++) {
    if (seriesdatagorfromsomewhere[i][1] === null) {
        seriesdatagorfromsomewhere[i][1] = 0;
    }
}

然后像往常一样将数据附加到系列中。

如果您的代码不生成空值,您可以通过以下两种方式执行此操作:以某种方式检查服务器日期的点数并检查系列之间的点。

这个想法是逐个处理点,得到每个点的第一个参数(日期)。遇到不存在的日期时,只需添加零值即可。当您到达停止日期时(从服务器或您显示信息的请求,无论如何),您应该停止处理信息

另一个是相同的方法,但在任何系列没有价值时停止。这样做的一个问题是,如果任何系列都有周末数据,那么你就不会为它创建任何零。

示例:

// var seriesdatagorfromsomewhere
// var stopdate (from server/request or highest date value from all series)
// var startdate (from server/request or lowest date value from all series)
// var currentseriespos = 0;
while (startdate <= stopdate) {
    var date = seriesdatagorfromsomewhere[currentseriespos][0];
    if (startdate != date) {
        seriesdatagorfromsomewhere.splice(currentseriespos, [startdate, 0]);
    }
    startdate = increaseOneDay(startdate);
    currentseriespos++;
}

未经测试。当然循环不会像这样工作,你会得到一个无限循环,但你明白了。