crossfilter + dc.js //彼此包含的维度组

时间:2018-02-14 16:38:12

标签: dc.js crossfilter

我有一个包含以下型号的数据源:

[
    {
        days : 3,
        value : 500
    },
    {
        days : 30,
        value : 320
    },
    {
        days : 4,
        value : 330
    },
    {
        days : 14,
        value : 300
    },
    {
        days : 44,
        value : 300
    }
]

我想创建一个dc.js散点图,显示三组(x轴)中的最小值,最大值和平均值(y轴):全部,最后10天和最后5天。

到目前为止,我已经创建了这个维度:

var daysGroupsDimension = data.dimension(function(d) {
    if(d.days <= 5) {
        return 'last 5';
    } else if(d.days <= 10) {
        return 'last 10';
    } else {
        return 'all';
    }
})

但是当我对它进行分组时,它会将数据分成三组,而这并不是我想要的。

我觉得这不是接近它的正确方法,但我似乎无法找到类似的东西。如果有人能够至少指出我正确的方向,那就太棒了!

谢谢!

1 个答案:

答案 0 :(得分:2)

使用Crossfilter 1.4的数组维度概念将单个记录放入多个组:https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension_with_arrays

var daysGroupsDimension = data.dimension(function(d) {
    if(d.days <= 5) {
        return ['last 5', 'last 10', 'all'];
    } else if(d.days <= 10) {
        return ['last 10', 'all'];
    } else {
        return ['all'];
    }
}, true)

当你这样做,然后在这个维度上分组时,你会得到3组:'最后5','最后10'和'所有'。 days值<= 5的记录将计入所有3组,等等。