如何使用top方法包装组

时间:2017-04-19 17:20:06

标签: dc.js crossfilter

我有一个地图显示,并希望将已选择状态的所有选举投票总计并显示在数字显示中。我在前一个线程中得到了建议,用一个top方法用一个对象包装我的组。我不知道怎么做,到目前为止我有:

var stateDim4 = ndx.dimension(function(d) { return d.state; }),
        group = stateDim4.group().reduceSum(function(d) {return d.elecVote }),
        count = group.top(51);
    count[0].key;
    count[0].value;

有人可以帮我解决这个问题吗? 上一主题:Summing a column and displaying percentage in a number chart

1 个答案:

答案 0 :(得分:2)

在前一个例子的基础上,这是一个假的小组,其top方法总结了所选州的所有选举投票。

var fakeGroup = {
    top: function() {
    return [
        grp2.top(Infinity).reduce(function(a,b) {
        if(b.value > 0) {
          a.value += elecVotesMap.get(b.key)
        }
        return a
      }, {
        key: "",
        value: 0
      })
    ]
  }
}


percentElec
  .group(fakeGroup)
  .formatNumber(d3.format("d")) 

这是一个有效的JSFiddle:https://jsfiddle.net/esjewett/u9dq33v2/2/

dc.js FAQ中有很多其他假组例子,但我认为他们中的任何一个都不是你想要的。