2012-09-04 15 views
1

我有定義爲這樣一組數據:如何填寫crossfilter group.all()結果中的空白?

var hour = data.crossfilter.dimension(function(d){ return d.date.getHours() + d.date.getMinutes()/60; }); 
var hours = hour.group(Math.floor); 

所生成的結果(hours.all())看起來像這樣:

[0, 124] 
[1, 25] 
[2, 5] 
[3, 2] 
[5, 339] 
[6, 11648] 
[7, 16334] 
[8, 15919] 
[9, 14078] 
[10, 13816] 
[11, 14646] 
[12, 15079] 
[13, 13718] 
[14, 13947] 
[15, 14055] 
[16, 13995] 
[17, 16166] 
[18, 14958] 
[19, 13991] 
[20, 12769] 
[21, 10638] 
[22, 3939] 
[23, 892] 

注意到有3之間的數據間隙,54缺少)。如何配置交叉過濾器來填補與0相反的空白?

回答

0

我想你必須自己填寫它們,因爲我沒有看到Crossfilter如何分組你的價值。這個責任應該落在您用來呈現數據的任何對象上。

您使用的是d3嗎?我認爲線性標尺會自動做到這一點。如果不是的話,那麼手動完成將會非常簡單。

+0

儘管我使用的是vanilla JavaScript,但這並不簡單。本質上問題在於確定「步長」。我已經嘗試了很多方法,儘管最終根據crossfilter組設置對值進行了硬編碼。請記住,數據步驟可以是整數,浮點數甚至日期值。 – Gajus

+0

沒錯,那會讓事情變得具有挑戰性。很高興你明白了。下面是我用來確定給定數組是否連續的公式,儘管我使用它來確定是否應該使用'filterRange'或將數組應用於具有交叉過濾器請求#36的'filter'函數參數。可以幫助你。 (Max + step) - min === array.length * step –