dc.js:数据子集的条形图

时间:2016-06-05 11:30:15

标签: javascript d3.js charts dc.js crossfilter

我有格式数据

 [
{ "date": dt1, "action": "T", "isRequest": "", "delay": 0 },
{ "date": dt1, "action": "C1", "isRequest": "R", "delay": 10 },
{ "date": dt1, "action": "T", "isRequest": "", "delay": 0 }, 
{ "date": dt1, "action": "C2", "isRequest": "R", "delay": 20 },
{ "date": dt1, "action": "T", "isRequest": "", "delay": 0 },
... ]

主条形图是关于计数(数组中的1行),所有延迟图表都是关于延迟分布(属性延迟) 按日期主图过滤,更改所有延迟图表上的数据。 到目前为止,这么好。
现在,我想要另一个图表,它与所有延迟图表中的数据子集一起使用,同时考虑属性“action”的过滤器:“C1”。 我可以过滤原始数据并调用crossfilter(filteredData),但是在主图上过滤不会反映此图表中的数据。 我试图从Crossfilter dimension and group to filter out data below certain threshold获取灵感

例如上 http://jsfiddle.net/iracic/dtyeL7g7/5/

谢谢

1 个答案:

答案 0 :(得分:1)

您可能希望在自定义组中实施过滤器,以便该组仅聚合符合条件的记录。您可以使用像Reductio这样的帮助程序库来执行此操作,并将您的组构建为:

var dim = ndx.dimension(...);
var group = reductio().count(true)
  .filter(function(d) { return d.action === "C1"; })(dim.group());

此处文档中的示例:https://github.com/crossfilter/reductio#aggregations-standard-aggregations-reductio-b-filter-b-i-filterfn-i-

也可以使用自定义组直接执行此操作,但它有点复杂。

不相关:group.reduceCount不接受参数,因此您在示例中传递给它的函数没有做任何事情。