Ich bin ziemlich neu zu D3 und Codierung im Allgemeinen. Ich versuche, ein Balkendiagramm einzurichten, das Daten abhängig von einem Kontrollkästchen enthält/ausschließt. Ich habe eine Reihe von Produktgruppen und Ländern, die ich in die durch die Leiste dargestellte Gesamtsumme ein- und ausschalten möchte. Die Ausgabe sollte einen Balken pro Produkt betragen.Dynamische Filterung mit D3
Mein vollständiger Datensatz enthält viele weitere Produkte, Produktgruppen und Länder. Daher ist es nicht sinnvoll, ein Schlüssel/Wert-Paar für jede mögliche Kombination von Kontrollkästchen zu erstellen. Stattdessen möchte ich eine Funktion erstellen, die die Kontrollkästchen neu bewertet und die Daten neu filtert und das Rollup aktualisiert, wenn ein Kontrollkästchen geändert wird.
Ich bin mir nicht sicher, wo diese Funktion in meinem Code sitzen sollte oder was sollte es wie ... Dieser Blick ist, was mit arbeite ich im Moment:
var data = data.filter(function(d) {
if (document.getElementById("nz_button").checked) {
return d.country == 'NZ'
}
if (document.getElementById("au_button").checked) {
return d.country == 'AU'
}
if (document.getElementById("us_button").checked) {
return d.country == 'US'
}
})
// to see how many distinct groups there are and sum volume
var products = d3.nest()
.key(function(d) {
return d.product
})
.rollup(function(leaves) {
var sum = 0;
leaves.forEach(function(d) {
sum += d.volume;
})
return sum
})
.entries(data);
Voll Code: http://plnkr.co/edit/qezdwMLt48RPc8KH17hS?p=preview
Vielleicht sollte ich mit Auswahlen arbeiten und das Nest/Rollup bei Bedarf erneut ausführen?
Jede Hilfe wird geschätzt. Thanks :)
Thank you! Das bringt mich größtenteils dorthin, um die if-Anweisungen im Filter herauszufinden ... – alexalex