【问题标题】:DC.js numberDisplay with crossfilter get total records带有交叉过滤器的 DC.js numberDisplay 获取总记录
【发布时间】:2017-03-30 18:48:05
【问题描述】:

我正在尝试了解如何将交叉过滤器与 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);

基本上只是试图获取总数以填充 numberDisplay,然后是单个 numberBack 过滤值,例如总账单损失等。开始时遇到问题。 TIA。

【问题讨论】:

    标签: javascript d3.js dc.js crossfilter


    【解决方案1】:

    一个普通的crossfilter组有多个基于key函数的bin。

    如果您想统计所有记录而不将它们分箱,请尝试使用 groupAll 代替:

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

    【讨论】:

    • 非常感谢...当我尝试使用它时,我只是错过了 valueAccessor 部分并获得了 NaN。抱歉解释不好,我只是说我现在有兴趣过滤所有记录的总计数,其中包含“账单”团队支持的所有记录,然后是“账单”,结果为损失等。正如我所说的我是刚刚开始
    • 啊,解析失败,现在知道了。是的,当这是最常见的情况时,您必须指定valueAccessor,这很奇怪。 crossfilter.groupAll 将观察所有过滤器,因此一旦您开始为球队添加图表,赢/输,这些将影响numRecords 和数字显示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    相关资源
    最近更新 更多