【问题标题】:dc.js: Bar chart on subset of datadc.js:数据子集的条形图
【发布时间】:2016-06-05 11:30:15
【问题描述】:

我有格式的数据

 [
{ "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/

谢谢

【问题讨论】:

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


    【解决方案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 不带参数,因此您在示例中传递给它的函数没有做任何事情。

    【讨论】:

    • 我以使用假组+密钥访问器+使用连接密钥结束。随意评论性能与减少。示例基于您的一些示例,如果我的记忆好... :-) jsfiddle.net/iracic/dtyeL7g7/7 BTW,您知道为什么使用 chart.centerBar(true) 时 UI 选择不对齐吗?
    • 啊,是的,在这种情况下,假组方法会起作用。如果您有更复杂的标准,最终需要组合组,则效果不佳。 reductio 方法的性能应该会好一些,因为您不需要在每次要渲染图表更新时重新过滤组,但在这种情况下差别不大。
    • 好的,谢谢。我将“暂时”关闭这个问题:-)
    猜你喜欢
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多