ich ein Array oder Objekte eines Datums aus und einige Werte:die Lücken in D3 Array Füllen nisten
var flatData = [
{ "date": "2012-05-26", "product": "apple" },
{ "date": "2012-07-03", "product": "orange" },
...
]
Ich versuche d3.nest() zu verwenden, um eine Zählung dieser Objekte von Jahr zu erhalten und dann nach Monat.
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);
Diese fast funktioniert, mit der Ausnahme, dass, wenn es keine Objekte für einen Monat sind die verschachtelten Daten enthalten keine Aufzeichnung eine Zählung von 0 für diesen Monat angibt. Gibt es einen Trick, um D3 zu sagen, diese Lücken zu füllen?
(Natürlich kann ich es immer die mühsame Art und Weise, dh eine Schleife durch alle verschachtelten Ebenen und schaffen Struktur eine neue Daten, die in die Lücken füllt.)
Was meinst du damit, die Lücken zu füllen, dh welchen Zählwert willst du zurückgeben, wenn da nichts ist? –
Ich möchte, dass es ein Objekt mit der Anzahl von 0 zurückgibt. Auf diese Weise, wenn ich die Informationen verwende, um ein Balkendiagramm zu zeichnen, gibt es einen Datensatz für jeden Balken und ich kann einfach die Objekte durchlaufen. Der alternative Ansatz, an den ich gedacht habe, ist nicht, für jeden Balken eine Aufzeichnung anzunehmen und den Diagramm-Rendering-Algorithmus entsprechend anzupassen. – Naresh
In D3 gibt es nichts, aber Sie können die fehlenden Werte ausfüllen, indem Sie danach die verschachtelte Struktur durchlaufen. –