11
我有一個數組或由一個日期的對象和一些值:填充D3陣列的縫隙築巢
var flatData = [
{ "date": "2012-05-26", "product": "apple" },
{ "date": "2012-07-03", "product": "orange" },
...
]
我想使用d3.nest()來獲取這些對象通過一年的計數然後按月。
var nestedData = d3.nest()
.key(function(d) { return d.date.split('-')[0]; }) // key is the year
.sortKeys(d3.ascending)
.key(function(d) {
var splitDate = d.date.split('-');
return splitDate[0] + '-' + splitDate[1]; // key is year-month
})
.sortKeys(d3.ascending)
.rollup(function(d) {
return d.length;
})
.entries(flatData);
這幾乎是工作,只是當有一個月沒有對象,嵌套的數據不包含指示在該月的0計數的記錄。是否有任何訣竅可以告訴D3填補這些空白?
(當然,我總是可以做到這一點的繁瑣方式,即遍歷所有嵌套的水平和創建的空白填補新的數據結構。)
填補差距的意思是什麼,即如果什麼都沒有,你希望它返回什麼數目? –
我希望它返回一個計數爲0的對象。這樣,當我使用信息繪製條形圖時,每個條都有一條記錄,我可以簡單地遍歷對象。我想到的另一種方法是不要爲每個小節假設記錄,並相應地調整圖表渲染算法。 – Naresh
D3中沒有任何內容適用於此,但您可以通過在之後迭代嵌套結構來填充缺失的值。 –