javascript - DC.js根据维度计算平均值

标签 javascript d3.js dc.js crossfilter

我有一个看起来像这样的数据集:

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 中创建一个图表,根据 CAT 变量显示 VAL 的总和,代码如下:

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)

我的问题是,我想在图表中显示每个 CAT 每月的 VAL 平均值,而不是总和(可以在另一个图表中过滤月份)。

有办法吗?

预先感谢您的回答!

最佳答案

因此,不要使用 crossfilter 来“仅仅”跟踪总和,而是使用自定义的reduce来跟踪总和和项目数量,并添加一个 valueAccessor 以返回 x.value.sum/x.value.qty

我建议您使用reductio要处理自定义减少,请检查示例,您有一个平均值。

关于javascript - DC.js根据维度计算平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868178/

相关文章:

javascript - 如何更新d3中的子元素?

dc.js - 我可以根据 crossfilter/dc.js 中的交集(和)过滤数据吗?

javascript - DC.js双分组

javascript - 如何将Chromecast支持添加到基于Java的视频播放器

javascript - 信用卡验证脚本说明

javascript - 原型(prototype)与 JavaScript 中的应用

javascript - Fabric js - 我如何知道当前正在工作的 Canvas

javascript - D3.js时间格式

javascript - 很难理解 d3.range.js 和 d3.scale.linear

javascript - 开始使用 d3.js,需要哪些文件?