2017-02-22 26 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編輯。 –