Я совершенно новичок в D3 и кодировании в целом. Я пытаюсь настроить гистограмму, которая включает/исключает данные в зависимости от флажка. У меня есть набор групп продуктов и стран, которые я хочу включить/выключить из общей суммы, представленной баром. Выход должен быть один бар на продукт.Динамическая фильтрация с D3
В моем полном наборе данных есть еще много продуктов, групп товаров и стран, поэтому не представляется возможным создать пару ключевых значений для каждой потенциальной комбинации флажков. Вместо этого я хотел бы создать функцию, которая переоценивает флажки и повторно фильтрует данные и обновляет сводку при изменении флажка.
Я не уверен, где эта функция должна сидеть в моем коде или что он должен выглядеть ... Это то, что я работаю с на данный момент:
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);
Полный код: http://plnkr.co/edit/qezdwMLt48RPc8KH17hS?p=preview
Может быть, я должен работать с выборами и повторным запуском гнезда/накопителя, когда это необходимо?
Любая помощь приветствуется. Спасибо :)
Спасибо! Это дает мне большую часть пути, теперь, чтобы выяснить инструкции if в фильтре ... – alexalex