Mam tablicy lub obiekty składające się z datą i niektóre wartości:Wypełnianie luk w D3 tablicy gniazdowania
var flatData = [
{ "date": "2012-05-26", "product": "apple" },
{ "date": "2012-07-03", "product": "orange" },
...
]
Próbuję użyć d3.nest(), aby uzyskać liczbę tych obiektów przez rok a następnie przez miesiąc.
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);
To prawie działa, oprócz tego, że gdy nie ma żadnych przedmiotów w miesiącu, dane zagnieżdżone nie zawiera zapis wskazujący liczbę 0 dla danego miesiąca. Czy jest jakaś sztuczka, aby powiedzieć D3, aby wypełnić te luki?
(Oczywiście, mogę zawsze zrobić to żmudny sposób, czyli do pętli wszystkich zagnieżdżonych poziomów i stworzyć nową strukturę danych, która wypełnia luki.)
Co masz na myśli, wypełniając luki, tj. ile haczyków chcesz zwrócić, jeśli nic nie ma? –
Chcę, aby zwracał obiekt z liczbą 0. W ten sposób, gdy używam informacji do narysowania wykresu słupkowego, dla każdego słupka jest zapis i mogę po prostu przechodzić między obiektami. Alternatywne podejście, o którym myślałem, to nie zakładać rekordu dla każdego paska i odpowiednio dostosować algorytm renderowania wykresu. – Naresh
W tym przypadku nie ma nic w D3, ale można uzupełnić brakujące wartości, wykonując po nich iterację nad strukturą zagnieżdżoną. –