javascript - DC.js numberDisplay with crossfilter 获取总记录

标签 javascript d3.js dc.js crossfilter

我正在尝试了解如何将 crossfilter 与 dc.js 结合使用。我有以下数据,我想首先用数据中的对象总数填充一个 numberDisplay。然后再填充票据损失的记录数。

var data = [
  {
    "team": "bills",
    "location": "home",
    "outcome": "loss"
  },
  {
    "team": "dolphins",
    "location": "away",
    "outcome": "loss"
  },
  {
    "team": "jets",
    "location": "home",
    "outcome": "loss"
  },
  {
    "team": "jets",
    "location": "home",
    "outcome": "win"
  },
  {
    "team": "dolphins",
    "location": "home",
    "outcome": "loss"
  },
  {
    "team": "dolphins",
    "location": "away",
    "outcome": "win"
  },
  {
    "team": "dolphins",
    "location": "home",
    "outcome": "win"
  },
  {
    "team": "dolphins",
    "location": "away",
    "outcome": "loss"
  }
]

DC.JS numberDisplay 需要一组,但我一直无法弄清楚如何简单地计算记录的数量。

var cf = crossfilter(data);
var team = cf.dimension(function(d) { return d.team })
var teams = team.group().reduceCount();

这似乎只返回第一个键的值? reduceSum() 和 groupAll() 也没有用。

var numberDisplayElem = dc.numberDisplay("#number-display-elem");
    numberDisplayElem
        .group(teams);

基本上只是试图获取总数来填充数字显示,然后是过滤值的单个数字返回,例如总帐单损失等。开始时遇到麻烦。 TIA。

最佳答案

一个普通的交叉过滤器组根据关键函数有多个 bin。

如果您想计算所有记录而不对它们进行装箱,请尝试使用 groupAll相反:

var numRecords = cf.groupAll();
numberDisplayElem
  .group(numRecords)
  .valueAccessor(x => x);

关于javascript - DC.js numberDisplay with crossfilter 获取总记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43126076/

相关文章:

d3.js - 防止 D3 在更新时添加重复项

javascript - Dc.js 传单标记弹出窗口显示来自输入数据的字段

javascript - 如何使边距在我的 JS 中动态创建的 div 上起作用?

javascript - d3.js - 如何插入新的同级元素

javascript - ionic 应用程序中的内容重叠

javascript - 如何获取图像的宽度和高度? ( getBBox() SVG 大小返回 0 )

javascript - 避免在直流图表中隐藏/切割气泡

javascript - dc.js - 如何从多列创建行图表

javascript - 可折叠查看更多和查看更少按钮

javascript - 选择附加项目 jquery