【问题标题】:crossfilter + dc.js // dimension groups containing each othercrossfilter + dc.js // 相互包含的维度组
【发布时间】:2018-02-14 16:38:12
【问题描述】:

我有一个具有以下模型的数据源:

[
    {
        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';
    }
})

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

我觉得这不是处理它的正确方法,但我似乎找不到类似的东西。如果有人至少可以为我指明正确的方向,那就太好了!

谢谢!

【问题讨论】:

    标签: dc.js crossfilter


    【解决方案1】:

    使用 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 个组:“last 5”、“last 10”和“all”。 days

    【讨论】:

    • 非常感谢伊桑!我不知道这个功能。我刚刚迁移到 crossfilter 1.4(从 1.3 开始没有问题),这工作完美无缺。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    相关资源
    最近更新 更多