Ho un array o oggetti costituiti da una data e alcuni valori:ovviare alle carenze delle serie D3 nidificazione
var flatData = [
{ "date": "2012-05-26", "product": "apple" },
{ "date": "2012-07-03", "product": "orange" },
...
]
Sto cercando di utilizzare d3.nest() per ottenere un conteggio di questi oggetti per anno e poi per mese.
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);
Questo quasi funziona, tranne che quando non ci sono oggetti per un mese, i dati nidificato non contiene un record che indica un conteggio di 0 per quel mese. C'è qualche trucco per dire a D3 di colmare queste lacune?
(Naturalmente, posso sempre farlo nel modo noioso, cioè a scorrere tutti i livelli nidificati e creare una nuova struttura di dati che riempie i vuoti.)
Cosa intendi con riempiendo gli spazi vuoti, ovvero che conteggio vuoi che restituisca se non c'è niente? –
Voglio che restituisca un oggetto con il conteggio di 0. In questo modo quando utilizzo le informazioni per disegnare un grafico a barre, c'è un record per ogni barra e posso semplicemente scorrere gli oggetti. L'approccio alternativo a cui stavo pensando non è quello di assumere un record per ogni barra e regolare di conseguenza l'algoritmo di rendering del grafico. – Naresh
Non c'è niente in D3 per questo, ma è possibile inserire i valori mancanti ripetendo successivamente la struttura nidificata. –