У меня есть набор данных, который выглядит примерно так:
MONTH CAT VAL
may A 1.0
may B 3.2
may C 4.6
jun A 2.7
jun B 4.2
jun C 5.8
jul A 4.1
jul B 9.2
jul C 13.0
Я смог создать диаграмму в DC.js, которая отображает сумму VAL в соответствии с переменной CAT, с помощью этого кода:
let chart = dc.barChart('#chart');
let ndx = crossfilter(data);
let catDim = ndx.dimension(function(d){return d.cat;});
let catGroup = catDim.group().reduceSum(function(d){return +d.val;});
chart
.dimension(catDim)
.group(catGroup)
.x(d3.scale.ordinal().domain(catDim))
.xUnits(dc.units.ordinal)
.elasticY(true)
Моя проблема заключается в том, что вместо суммы я хотел бы показать в графе среднее значение VAL за месяц для каждого CAT (MONTH можно отфильтровать на другом графике).
Есть ли способ сделать это?
Заранее благодарю за ваши ответы!
Поэтому вместо того, чтобы использовать crossfilter, чтобы "просто" отслеживать сумму, используйте пользовательский снимок, который отслеживает как сумму, так и количество элементов, и добавляет valueAccessor для возврата x.value.sum/x.value.qty
Я бы предложил вам использовать reductio для обработки пользовательского сокращения, проверьте примеры, у вас есть один для среднего.