dc.js - 显示值,而不是reduceSum或reduceCount

时间:2014-05-15 16:28:40

标签: javascript dc.js crossfilter

我有以下数据结构,并且我以几张​​图表的形式显示信息。我想有一个时间图表,显示X轴上的天数,以及Y天那天的最小min_val。

date               type  value  min_val_day
01/12/13 10:00:00   A     10      10
01/12/13 12:00:00   A     20      10
02/12/13 10:00:00   A     15      15
02/12/13 11:00:00   A     28      15

我不想reduceCount或reduceSum值,我希望结果是我表中的实际值。所以01/12/13将显示Y轴值为10,02 / 12/13将为15。

我确信这很简单,但我无法理解它!这就是我现在使用的,它不正确,因为它是reduceSum

var mindayDim = facts.dimension(function (d) {return d3.time.day(d.date); });
var mindayDimGroup = mindayDim.group().reduceSum(function (d) { return d.min_val_day; });

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

假设你的意思是MAX值,这是一个例子:

priceGroup = priceDimension.group().reduce(
            function (p, v) {
                ++p.count;
                if(p.maxCompetitivePrice < v.competitive_price)
                    p.maxCompetitivePrice = v.competitive_price;
                return p;
            },
            null,
            function () {
                return { count:0, maxCompetitivePrice: 0};
            }
        );

传递给reduce的第二个函数是null,这会强制分组在reduce上重新计算整个数据集。这对我的小数据集来说是可以接受的,但应谨慎使用。

另一种方法是存储某种排序的javascript结构,并在添加和删除时维护排序的结构。