2017-02-22 47 views
0

所以我有一个highcharts设置更换空,我希望能够与0Highcharts - 0

http://jsfiddle.net/e6y43oaf/

更换空在的jsfiddle你可以看到18和19(周末)没有人做过任何搜索,但它进行下一步。

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

回答

1

Altough Higcharts有connectNulls选项,它将直接连接前一个值和下一个值。我能想到的唯一方法是对数据进行预处理,将其附加到系列和转换空值为零,这样才读值:

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

然后追加的数据与平时一样的系列。

如果你的代码不生成空值,你可以通过两种方式来完成:按照某种方式检查服务器日期中的点,并检查系列之间的点。

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

另一个是相同的方法,但当任何系列没有价值时停止。与此有关的一个问题是,如果任何系列具有周末的数据,那么您将不会为其创建任何零。

实施例:

// 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++; 
} 

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

+0

啊,谢谢。您所制作的代码在我感激不尽的情况下不起作用。该系列数据不包含任何空值的条目,因此无法进行比较。它只是忽略它并转到下一组数据。 数据来自数据库,在搜索完成后生成。然后它通过运行SQL查询对它们进行计数,按名称和日期对它们进行分组,以便每天计算一次。因此,检查是否在连续的每一天,如果没有数据,生成0是非常复杂的。我将不得不查看是否有可能在后端的某处添加0代。 – Slopax

+0

哦,我明白了。然后我认为我有另外两个前端解决方案。去编辑。 –

+0

@Slopax编辑。 –