所以我有一个highcharts设置,我希望能够用0替换空值。
在JSFiddle上你可以看到 18th和19 (周末)没有人做过任何搜索,但是它会进入下一个点。
是否可以将这些空值替换为,而不是在每一行中都没有那么美观的空白?
我怀疑我可能不得不使用formatter
标签来执行此操作。
答案 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++;
}
未经测试。当然循环不会像这样工作,你会得到一个无限循环,但你明白了。