如何在dc.js上创建一个具有多个维度的组

时间:2016-12-14 08:29:25

标签: javascript d3.js dc.js crossfilter

我正在尝试使用dc.js库创建数据可视化。

但我的数据有多个值字段。

所以这是我的部分数据:

[{"_1000_1249":0,"_1250_1499":2},{"_1000_1249":1,"_1250_1499":2},{"_1000_1249":2,"_1250_1499":3}]

我想用这样的数据键创建组(计算数据总和):

  • " _1000_1249": 3 ,(" _1000_1249"的总和)
  • " _1250_1499": 7 ,(" _1250_1499"的总和)

那么如何创建这样的dc.js行图?

由于

1 个答案:

答案 0 :(得分:1)

我认为您应该重塑数据,以便更好地适应Crossfilter范例。以下内容可为您提供所需内容:

var data = [{"_1000_1249":0,"_1250_1499":2},{"_1000_1249":1,"_1250_1499":2},{"_1000_1249":2,"_1250_1499":3}]

var updatedData = []
for(var i=0; i < data.length; i++) {
    for(key in data[i]) {
    updatedData.push({
        key: key,
      value: data[i][key]
    })
  }
}

var cf = crossfilter(updatedData)
var dimension = cf.dimension(function(d) { return d.key; })
var group = dimension.group().reduceSum(function(d) { return d.value; })

console.log(group.all())

如果您想进行实验,请在此处使用JSFiddle:https://jsfiddle.net/esjewett/1d853fwj/3/